C3Lab研究室

Back to Title Page(OpenLab)タイトルページへ戻る

最終更新日: 1998年 08月 13日 木曜日

レジストリに登録されている文字列を修得する


 レジストリに登録されている文字列を修得するサンプルコードを作成しました。レジストリキーの 参照には以下の変数を指定し、szPath,wszPath で格納バッファを指定します。修得に成功した場合TRUE、失敗した場合 FALSEを帰します。
 アプリケーションを作成したときなどにレジストリーを利用して登録を行ったり、レジストリを参照して 現在の環境を知るなどいろいろなことが可能になります。

HKEY
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
subKey1 HKEYで指定したキーからの相対位置(フォルダー)を指定
subKey2 HKEYsubKey1で指定した 位置にあるキーの名前を指定します。


ヘッダー部分。関数定義 

#ifndef _MAX_PATH
#include <stdlib.h>
#endif
BOOL GetRegKeyValue(HKEY hKey,LPSTR subKey1,LPSTR subKey2,CHAR szPath[_MAX_PATH]);
BOOL GetRegKeyValue(LPSTR subKey1,LPSTR subKey2,CHAR szPath[_MAX_PATH]);
BOOL GetRegKeyValue(HKEY hKey,LPSTR subKey1,LPSTR subKey2,WCHAR wszPath[_MAX_PATH]);
BOOL GetRegKeyValue(LPSTR subKey1,LPSTR subKey2,WCHAR wszPath[_MAX_PATH]);

関数本体部分


BOOL GetRegKeyValue(LPSTR subKey1,LPSTR subKey2,CHAR szPath[_MAX_PATH]){
    return(GetRegKeyValue(HKEY_LOCAL_MACHINE,subKey1,subKey2,szPath));
}


BOOL GetRegKeyValue(LPSTR subKey1,LPSTR subKey2,WCHAR wszPath[_MAX_PATH]){
    return(GetRegKeyValue(HKEY_LOCAL_MACHINE,subKey1,subKey2,wszPath));
}
BOOL GetRegKeyValue(HKEY hKey,LPSTR subKey1,LPSTR subKey2,WCHAR wszPath[_MAX_PATH]){
    CHAR szPath[_MAX_PATH];
    BOOL bReg;
    bReg = GetRegKeyValue(hKey,subKey1,subKey2,szPath);
    mbstowcs(wszPath, szPath,_MAX_PATH);
    return bReg;
}

BOOL GetRegKeyValue(HKEY hKey,LPSTR subKey1,LPSTR subKey2,CHAR szPath[_MAX_PATH])
{
    HKEY hk;
    BOOL bRet = FALSE;
    DWORD cbPath = _MAX_PATH;
    szPath[0]=0;
    if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,subKey1,0,KEY_READ,&hk)) return FALSE;
    if(RegQueryValueEx(hk,subKey2,NULL,NULL,(LPBYTE)szPath,&cbPath)==ERROR_SUCCESS)bRet=TRUE;
    else bRet=FALSE;
    RegCloseKey(hk);
    return bRet;
}

Copyright (C) Kitaro 1998