29

私はインターネット全体を見ましたが、私が見つけることができるまともな解決策はないようです。C ++でプログラム的に、エクスプローラーが実際のパスに変換できるパス「%ALLUSERSPROFILE%\ApplicationData」を取得できるようにしたい。

サードパーティのコードに依存せずにこれを行うことはできますか?

4

3 に答える 3

51

CSIDLとして使用SHGetFolderPathします。CSIDL_COMMON_APPDATA

TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath)))
{
    //....
}
于 2010-05-24T17:52:26.393 に答える
20

インタージェイの答えを補うためだけに

  1. shlobj.hを使用するために含める必要がありましたSHGetFolderPath

  2. 多くの場合、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\\") );
}

詳細については、こちらをご覧ください。

于 2012-06-14T12:11:00.067 に答える
-4

レジストリから値を読み取ることもできます

パス= HKEY_LOCAL_MACHINE\ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell Folders

キー=共通AppData

于 2010-05-24T18:08:05.343 に答える