Подтвердить что ты не робот

Как получить путь данных приложения в Windows с помощью С++?

Я смотрел по всему Интернету, и, похоже, не было достойного решения, которое я мог найти. Я хочу иметь возможность программно в С++ получить путь "% ALLUSERSPROFILE%\Application Data", который исследователь может перевести в реальный путь.

Могу ли я сделать это, не полагаясь на сторонний код?

4b9b3361

Ответ 1

Используйте SHGetFolderPath с CSIDL_COMMON_APPDATA как CSIDL.

TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath)))
{
    //....
}

Ответ 2

Просто чтобы ответить на interjay

  • Мне пришлось включить shlobj.h для использования SHGetFolderPath.

  • Часто вам может потребоваться прочитать файл из appdata, для этого вам нужно использовать функцию pathAppend (для этого требуется shlwapi.h).

#include <shlwapi.h>
#pragma comment(lib,"shlwapi.lib")
#include "shlobj.h"

TCHAR szPath[MAX_PATH];
// Get path for each computer, non-user specific and non-roaming data.
if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath ) ) )
{
    // Append product-specific path
    PathAppend( szPath, _T("\\My Company\\My Product\\1.0\\") );
}

Подробнее см. здесь.

Ответ 3

вы также можете прочитать значение из реестра

path = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Папки оболочки

key = Общие AppData​​strong >