いの確実な取得に発売のフォルダXP、Vistaでは動作しないのですか?

StackOverflow https://stackoverflow.com/questions/76080

  •  09-06-2019
  •  | 
  •  

質問

る必要がありま確実に迅速に発売のフォルダもすべて、現在のユーザーと、Vista、XP.の開発をしていC++ですが、この一般的なWindows APIの質問です。

参考までに、こちらのコードの取得を申請データフォルダの下の両方のシステム

    HRESULT hres; 
    CString basePath;
    hres = SHGetSpecialFolderPath(this->GetSafeHwnd(), basePath.GetBuffer(MAX_PATH), CSIDL_APPDATA, FALSE);
    basePath.ReleaseBuffer();

いことをうかがわせるものとなっているかをサブフォルダMicrosoftます。

Windows XPでのアプリのデータをサブフォルダー:

Microsoft\Internet Explorer\迅速に開始

下Vista、さらにサブフォルダに変更されてい:

ローミング\Microsoft\Internet Explorer\迅速に開始

るかということを確認してくださいが正しいか正しい場所です。

正しい かこの場所は非常に重要などに依存ハードコードされたフォルダの名前には、ほとんど休憩用途でご利用いただけ国際インストールす。このフォルダの名前が"ローミング"のVistaに思うものがある場合、特別な取り扱いの関連性を有するフォルダのように地元の設定フォルダの下ます。

編集:以下のmsdnの記事: http://msdn.microsoft.com/en-us/library/bb762494.aspx ることを示しCSIDL_APPDATAは同等のIDのFOLDERID_RoamingAppDataないよう支援StocksRの主張CSIDL_APPDATAついてはC:\Users\xxxx\AppData oamingできるものの同一の相対パスのためのCSIDL_APPDATAを迅速に開始(\Microsoft\Internet Explorer\迅速に開始).

そのため、以下のアルゴリズムが正したMS:

HRESULT hres; 
CString basePath;
hres = SHGetSpecialFolderPath(this->GetSafeHwnd(), basePath.GetBuffer(MAX_PATH), CSIDL_APPDATA, FALSE);
basePath.ReleaseBuffer();
CString qlPath = basePath + "\\Microsoft\\Internet Explorer\\Quick Launch";

ももいいかもチェックhresるために呼び出SHGetSpecialFolderPathに成功しました。

役に立ちましたか?

解決

起動側のアドレスを取得しのwindows vistaとはC:\Users\xxxx\AppData oaming ないのC:\Users\xxxx\AppData フォルダも提供しないものとします。

またこのartical http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept05/hey0901.mspx るマイクロソフトのサイトとすだけの利用からの相対パスの起動側のアドレスを取得しフォルダ

他のヒント

大問題です!

いください。 いの誘惑 掘へのレジストリ この情報!

もしなければな誘惑にハードコードの一部のパスをもっております。きましては、特別の起動側のアドレスを取得システムは、単に追加文字列を、この場合の下での米国以外設置のソフトウェアのフォルダの名前は局地的にその言語です。E.g. GetSpecialFolderPath(APP_DATA) + "\\Fonts" では英語以外のバージョンのosはWindowsです。

思うに、適切な答え;私はこれだけは知った。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top