Win API:レジストリ操作関数

4320 ワード

関数の説明:
1.RegCreateKeyEx Function
関数のプロトタイプ:
LONG WINAPI RegCreateKeyEx(
  __in        HKEY hKey,
  __in        LPCTSTR lpSubKey,
  __reserved  DWORD Reserved,
  __in_opt    LPTSTR lpClass,
  __in        DWORD dwOptions,
  __in        REGSAM samDesired,
  __in_opt    LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  __out       PHKEY phkResult,
  __out_opt   LPDWORD lpdwDisposition
);

説明:指定したキーまたはサブキーを開きます.開くキーが存在しない場合は、この関数を確立しようとします.この関数を提供するのは、後方互換性のためです.すべてのWIN 32アプリケーションは、関数RegCreateKeyEx()を使用する必要があります.
 
各パラメータおよび戻り値の意味は次のとおりです.
1.hKeyyはプライマリ・キーの値で、以下の数値をとることができます:HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG、  HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USER、HKEY_PERFORMANCE_DATA(WINNTオペレーティングシステム)、HKEY_DYN_DATA(WIN 9 Xオペレーティングシステム).
2.lpSubKeyは、作成または開くサブキーの名前を含むゼロで終わる文字列へのポインタです.サブキーは反斜線(/)で開始できません.このパラメータはNULLとすることができます.
3.Reservedは保持値であり、0に設定する必要があります.
4.lpClassは、キータイプを含む文字列を指します.キーが既に存在する場合は、パラメータは無視されます.
5.dwOptions新しく作成したキーに一定の属性を設定します.以下の数値を取ることができます:REG_OPTION_NON_VOLATILEは、新しく作成したキーが非短期間のキーであることを示す(データ情報はファイルに保存され、システムが再起動されるとデータ情報が復元される).REG_OPTION_VOLATILEは、新しく作成されたキーが短いキー(データ情報がメモリに保存されている)であることを示し、Windows 95はこの数値を無視する.REG_OPTION_BACKUP_RESTOREはWINNTでのみサポートされており、優先度サポートを提供できます.
6.samDesiredキーへのアクセス権を設定するために使用されます.KEY_CREATE_LINKは、シンボルキーの生成を許可することを示す.KEY_CREATE_SUB_KEYはサブキーの生成を許可することを示す.KEY_ENUMERATE_SUB_KEYSは列挙サブキーの生成を許可することを示す.KEY_EXECUTEは、読み出し操作が許可されていることを示す.KEY_NOTIFYは交換許可通知を示す.  KEY_QUERY_VALUEはクエリを許可するサブキーを表します.KEY_ALL_ACCESSは完全アクセスを提供し、上記の数値の組み合わせです.KEY_READは以下の数値の組み合わせである:KEY_QUERY_VALUE、KEY_ENUMERATE_SUB_KEYS、KEY_NOTIFY;  KEY_SET_VALUEは、サブキーの設定を許可する数値を表す.KEY_WRITEは次の数値の組み合わせです:KEY_SET_VALUE、KEY_CREATE_SUB_KEY.
7.lpSecurityAttributesはSECURITYを指すATTRIBUTES構造のポインタは,返されたハンドルが処理プロセスによって継承されるかどうかを決定する.このパラメータがNULLの場合、ハンドルは継承できません.WINNTでは、このパラメータは、新しく作成されたキーの安全な記述を追加することができる.
8.phkResultは、新しく作成または開いたキーを指すハンドルのポインタです.
9.lpdwDispitionキーが作成されたか開かれたかを示します.REG_CREATE_NEW_KEYはキーが以前存在しなかったことを示し、現在作成されている.REG_OPENED_EXISTING_KEYは、キーが既に存在し、現在開いていることを示します.
関数呼び出しに成功した場合はERROR_を返します.SUCCESS.それ以外の場合、戻り値はファイルWINERRORとなります.hで定義されたゼロ以外のエラーコードで、FORMAT_を設定できます.MESSAGE_FROM_SYSTEM識別子は、エラーの全体的な説明を取得するためにFormatMessage()関数を呼び出す. 
2.RegSetValueEx Function 
関数のプロトタイプ:
LONG WINAPI RegSetValueEx(
  __in        HKEY hKey,
  __in_opt    LPCTSTR lpValueName,
  __reserved  DWORD Reserved,
  __in        DWORD dwType,
  __in_opt    const BYTE *lpData,
  __in        DWORD cbData
);

説明:レジストリのキー値を設定します.
 
各パラメータおよび戻り値の意味は次のとおりです.
1.hKeyの意味はRegCreateKeyEx関数のhKeyパラメータと同じです.
2.Reservedは保持値であり、0に設定する必要があります.3.lpValue Nameは、値名を含む文字列へのポインタです.Reservedは保持され、通常は0に設定する必要があります.4.dwTypeは、設定された値のタイプとRegQueryValueKeyExのlyTypeパラメータを決定する.5.lpDataは、データを含むバッファへのポインタです.6.cbDataバイト単位でデータの長さを指定します.
戻り値はRegCreateKeyEx関数の戻り値と同じです.
 
3.RegCloseKey Function
関数のプロトタイプ:
LONG WINAPI RegCloseKey(
  __in  HKEY hKey
);

説明:指定したレジストリキーを閉じ、ハンドルを解放します.1つ以上のキーまたは値の操作が完了したら、そのキーを閉じて操作結果を保存する必要があります.1つのキーを閉じると、ハンドルが不正になり、ハンドルが解放されます.
 
サンプル・プログラム:
#include #include #include //int APIENTRY _WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTRlpCmdLine,int nCmdShow){HKEY hKey;DWORDdw;CString cStr(「SOFTWARE//HUSTSPY//spytest」);//C StringとLPCTSTRの間でCString dataC(「D://Program Files//MinGW///bin」);CString seg("segWLesson");long RellReng ReltWinMain(HINSTANCE hInstance,HINSTANCE hInstance,HINSTANCE hPrevInstance,HINSTANCE hPrevInstaturn;//キーまたはサブキーlReturn=RegCreateKeyEx(HKEY_CURRENT_USER,cStr,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dw); if(lReturn=ERROR_SUCCESS){//オープンまたは作成に成功した場合、レジストリのキー値long setRet=RegSetValueEx(hKey,seg,0,REG_EXPAND_SZ,(BYTE*)(LPCTSTR)dataC,dataC.GetLength()+28);if(setRet=ERROR_SUCCESS)MesageBox(NULL,TEXT(「追加に成功!」)、TEXT ("HelloMsg"), 0); } Else{MessageBox(NULL,TEXT(「追加に失敗!」)、TEXT ("HelloMsg"), 0); } RegCloseKey(hKey);//return 0をオフにします.}