web-dev-qa-db-ja.com

C ++を使用してWindowsでアプリケーションデータパスを取得するにはどうすればよいですか?

私はインターネット全体を見渡したが、見つけることができる適切な解決策はないようだ。プログラムでC++を使用して、エクスプローラーが実際のパスに変換できるパス "%ALLUSERSPROFILE%\ Application Data"を取得できるようにしたいと考えています。

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

26
Brian T Hannan

SHGetFolderPathCSIDL_COMMON_APPDATA CSIDLとして。

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

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

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

  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\\") );
}

詳細は こちら を参照してください。

18
Danield