MFCでデスクトップなど特殊フォルダのパスを取得

サンプル


char lpszPath[MAX_PATH] = "";
LPITEMIDLIST pidl;

if(::SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOPDIRECTORY, &pidl) == NOERROR)
{
    ::SHGetPathFromIDList(pidl, lpszPath);
    ::CoTaskMemFree(pidl);
}

AfxMessageBox(lpszPath);

パラメータ 番号 フォルダ
CSIDL_DESKTOP 0x0000 デスクトップ
CSIDL_INTERNET 0x0001 インターネット
CSIDL_PROGRAMS 0x0002 プログラム
CSIDL_CONTROLS 0x0003 コントロールパネル
CSIDL_PRINTERS 0x0004 プリンタ
CSIDL_PERSONAL 0x0005 ドキュメント
CSIDL_FAVORITES 0x0006 お気に入り
CSIDL_STARTUP 0x0007 スタートアップ
CSIDL_RECENT 0x0008 最近使ったファイル
CSIDL_SENDTO 0x0009 送る
CSIDL_BITBUCKET 0x000a ゴミ箱
CSIDL_STARTMENU 0x000b スタートメニュー
CSIDL_DESKTOPDIRECTORY 0x0010 デスクトップ
CSIDL_DRIVES 0x0011 マイ コンピュータ
CSIDL_NETWORK 0x0012 マイ ネットワーク
CSIDL_NETHOOD 0x0013 NetHood
CSIDL_FONTS 0x0014 フォント
CSIDL_TEMPLATES 0x0015 テンプレート
CSIDL_COMMON_STARTMENU 0x0016 全ユーザーのスタートメニュー
CSIDL_COMMON_PROGRAMS 0x0017 全ユーザーのプログラム
CSIDL_COMMON_STARTUP 0x0018 全ユーザーのスタートアップ
CSIDL_COMMON_DESKTOPDIRECTORY 0x0019 全ユーザーのデスクトップ
CSIDL_APPDATA 0x001a Application Data
CSIDL_PRINTHOOD 0x001b PrintHood
CSIDL_ALTSTARTUP 0x001d ローカライズされないスタートアップ
CSIDL_COMMON_ALTSTARTUP 0x001e 全ユーザーのローカライズされないスタートアップ
CSIDL_COMMON_FAVORITES 0x001f 全ユーザーのお気に入り
CSIDL_INTERNET_CACHE 0x0020 IEキャッシュ保存先
CSIDL_COOKIES 0x0021 クッキー
CSIDL_HISTORY 0x0022 履歴