none
特殊フォルダの取得方法について RRS feed

  • 質問

  • こんにちは。

    開発はC++、.Net2003

    動作環境はWindows2000、XP、Vistaです。

     

    ある特殊フォルダのパスを取得したいのですが、その方法が分からず、困っております。

    そのパスとは、以下です。

    (OSのインストールドライブ):\Document and Settings\(アカウント名)\

     

    SHGetFolderPath()APIやSHGetSpecialFolderPath()APIを使用すれば、

    このパス以下のMyDocumentsなどのパスを取得できるため、現在は".."をパスの最後に

    付加して、下記のようにしてアクセスしています。

    (OSのインストールドライブ):\Document and Settings\(アカウント名)\MyDocuments\..\

     

    直接希望のフォルダパスを取得するAPIや方法はないでしょうか?
    2008年9月1日 2:43

回答

  • 目的のものに合致するかどうかは分からないのですが、

     

    getenv("USERPROFILE") ないし _wgetenv(L"USERPROFILE")

     

    というのは如何でしょうか?

     

    2008年9月1日 5:57

すべての返信

  • 目的のものに合致するかどうかは分からないのですが、

     

    getenv("USERPROFILE") ないし _wgetenv(L"USERPROFILE")

     

    というのは如何でしょうか?

     

    2008年9月1日 5:57
  • Takashi SAKAMOTOさん、回答ありがとうございます。

    頂いた情報を元に調べたところ、GetEnvironmentVariable()APIが見つかりました。

    このAPIにUSERPROFILEを指定しても同様の情報が取得できるようです。

    また、CStringT::GetEnvironmentVariable()でも同様の情報が取得できました。

     

    CStringTで使用できるのは楽ですね。

    今回はCStringTの方を使用することにします。

    大変助かりました。ありがとうございます。

    2008年9月2日 2:48
  • こんにちは。中川俊輔 です。

     

    Takashi SAKAMOTOさん、回答ありがとうございます。

     

    ofenさん、フォーラムのご利用ありがとうございます。

    有用な情報と思われたため、Takashi SAKAMOTOさんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    ofenさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

    2008年9月16日 9:17
  • こんにちは。
    既に回答済みのようですが、SHGetFolderPathを使ってCSIDL_PROFILEを引数として渡すとご希望のフォルダ名が取得できますよ。

        TCHAR szPath[MAX_PATH];
        if(SUCCEEDED(SHGetFolderPath(NULL,
                                     CSIDL_PROFILE,
                                     NULL,
                                     0,
                                     szPath)))
        {
            OutputDebugString(szPath);
        }


    http://msdn.microsoft.com/en-us/library/bb762494(VS.85).aspx

    2008年9月17日 1:12