我想检测一个以“HKEY_LOCAL_MACHINE\SOFTWARE\blah\SetupPath”开头的注册表项,并在可能的情况下读取到 CString。
我在 RegOpenKeyEx 函数上看到了 MSDN
LONG WINAPI RegOpenKeyEx(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpSubKey,
_Reserved_ DWORD ulOptions,
_In_ REGSAM samDesired,
_Out_ PHKEY phkResult
);
所以为此看起来我需要设置一些东西。
HKEY hKey = HKEY_LOCAL_MACHINE;
LPCTSTR lpSubKey = "SOFTWARE\blah\SetupPath";
并查看密钥是否存在
LONG res = RegOpenKeyEx(hKey, lpSubKey, 0, 0, 0);
if(res == ERROR_SUCCESS)
// The key exists
现在,如果密钥存在,我想将那里的内容读入 CString。我还看到了 RegQueryValueEx
LONG WINAPI RegQueryValueEx(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpValueName,
_Reserved_ LPDWORD lpReserved,
_Out_opt_ LPDWORD lpType,
_Out_opt_ LPBYTE lpData,
_Inout_opt_ LPDWORD lpcbData
);
在我调用这个函数之前,看起来我也需要一些设置。
HKEY hKey = HKEY_LOCAL_MACHINE;
lpSubKey = "SOFTWARE\blah\SetupPath";
LPDWORD type = null;
LPDWORD data = null;
现在我可以调用它了
LONG res2 = RegValueQueryEX(hKey, lpSubKey, 0, type, data,0);
然后我想我可以检查一下类型然后转换为字符串?
CString regVal;
if(res2 == ERROR_SUCCESS)
if(type == REG_SZ)
if(data != null)
regVal = new CString((LPSTR)data);
这一切都正确吗?我可能会错过什么或需要做什么?