C++でのregopenkeyex関数の使い方は何ですか?
C++において、RegOpenKeyEx関数は指定されたレジストリキーを開き、後続の操作に使用するハンドルを返します。
以下は関数のプロトタイプです。
LONG RegOpenKeyEx(
HKEY hKey,
LPCTSTR lpSubKey,
DWORD ulOptions,
REGSAM samDesired,
PHKEY phkResult
);
説明:
- hKey:開くレジストリ項目の親ハンドル。次のような定義済みのルートキーのいずれかであることができます:HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERSなど。
- lpSubKey: NULLまたは空の文字列である可能性がある、開くべきレジストリキーの相対パスの文字列。
- ulOptions: オプションを開く際に、0またはREG_OPTION_OPEN_LINKのいずれかを指定できます。通常は0を使用します。
- 訪問許可は、レジストリエントリへのアクセス許可を指します。一般的な許可フラグにはKEY_ALL_ACCESS、KEY_READ、KEY_WRITEなどがあります。
- phkResult:レジストリキーを開いたハンドルを受け取ります。
戻り値:
- 成功した場合は、ERROR_SUCCESSを返します。関数が失敗した場合は、エラーコードを返します。
使い方の例:
#include <Windows.h>
#include <iostream>
int main() {
HKEY hKey;
DWORD dwDisposition;
// 打开HKEY_CURRENT_USER下的某个子项
LONG result = RegOpenKeyEx(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, &hKey);
if (result != ERROR_SUCCESS) {
std::cout << "Failed to open key. Error code: " << result << std::endl;
return 1;
}
// 使用hKey进行后续操作,如读取或写入键值
// 关闭注册表项句柄
RegCloseKey(hKey);
return 0;
}
上記の例では、HKEY_CURRENT_USERのサブキーを開き、返されたハンドルを使用して追加の読み取りまたは書き込み操作を行います。最後に、リソースを解放するためにレジストリキーのハンドルを閉じました。