設定ファイルの保存先【Windows API】

Windowsにおいてはマルチユーザに対応しているのでログインユーザ毎に 設定を保存するのが正しいアプリケーションです。 アプリケーションのデータを保存する場所はWindowsが用意しています。 デスクトップのパスを取得するときに使用したSHGetSpecialFolderLocationを 使うことでアプリケーションの設定ファイルの保存先を得ることができます。 VistaからはProgram Filesへのファイルの書き込みが自由にできなくなったので ここで取得したフォルダに保存する必要があります。 アンインストール時には忘れずに削除していかなければなりません。

#include <shlobj.h>

int main(int argc, char* argv[])
{
    TCHAR szPath[MAX_PATH+1];
    LPITEMIDLIST pidl;

    HWND hWnd = NULL;

    IMalloc *pMalloc;
    SHGetMalloc( &pMalloc );

    if( SUCCEEDED(SHGetSpecialFolderLocation(hWnd, CSIDL_APPDATA, &pidl)) )
    { 
        // パスに変換する
        SHGetPathFromIDList(pidl,szPath);
        // 取得したIDLを解放する (CoTaskMemFreeでも可)
        pMalloc->Free(pidl);
        printf("[%s]\n", szPath);
    }

    pMalloc->Release();
    return 0;
}

 

Windows API

Posted by @erestage