レジストリの操作に用意されたAPI
- RegOpenKeyEx
- RegCreateKeyEx
- RegCloseKey
- RegQueryValueEx
- RegSetValueEx
他には
- RegistryGetString
- RegistrySetString
なんてのもあるけど、状態および通知ブローカー API のネイティブ関数って書いてある。
レジストリ操作には使えないのだろうか?
とりあえず RegQueryValueEx を使う
今のところフォルダの指定だけを保存するのでこんな感じにした
#define SZ_REG_ROOT TEXT("Software\\umalab\\nasuvi")
#define SZ_REG_FOLDER TEXT("FOLDER")
//***************************
// レジストリの読込
//***************************
{
HKEY HKey;
long lErr;
DWORD dwSize=0;
lErr = RegOpenKeyEx(HKEY_CURRENT_USER, SZ_REG_ROOT,0,KEY_READ,&HKey);
if(ERROR_SUCCESS==lErr)
{
dwSize=(MAX_PATH+1)*sizeof(TCHAR);
lErr=RegQueryValueEx(HKey, SZ_REG_FOLDER, 0, 0, (LPBYTE)&gFolderName, &dwSize);
RegCloseKey(HKey);
}
if((dwSize>=0) || (ERROR_SUCCESS!=lErr))
{
wcscpy(gFolderName,TEXT("\\My Documents\\マイ ピクチャ\\"));
}
}
//***************************
// レジストリへの書き込み
//***************************
{
HKEY HKey;
DWORD dw;
long lErr;
lErr = RegOpenKeyEx(HKEY_CURRENT_USER, SZ_REG_ROOT,0,KEY_READ,&HKey);
if(lErr!=ERROR_SUCCESS)
lErr = RegCreateKeyEx (HKEY_CURRENT_USER, SZ_REG_ROOT,0,0,REG_OPTION_NON_VOLATILE,KEY_WRITE,0,&HKey,&dw);
if(lErr==ERROR_SUCCESS)
{
DWORD dwSize = (wcslen(gFolderName)+1) * sizeof(TCHAR);
RegSetValueEx(HKey, SZ_REG_FOLDER, 0, REG_SZ, (LPBYTE)&gFolderName, dwSize);
RegCloseKey(HKey);
}
}
0 件のコメント:
コメントを投稿