读写注册表SetRegisterValue和GetRegisterValue
2022-01-16
26
0
写注册表
DWORD CUtils::SetRegisterValue(HKEY key, LPCSTR path, LPCSTR name, LPBYTE pData, ULONG nLen, DWORD type)
{
HKEY hKey = NULL;
DWORD err = STATUS_SUCCESS;
do
{
long lRet = RegCreateKeyExA(key, (LPCSTR)path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS | KEY_WOW64_64KEY, NULL, &hKey, NULL);
if (ERROR_SUCCESS != lRet)
{
err = GetLastError();
DebugPrintA("RegCreateKeyExA error[%d,%D]\n", err, lRet);
break;
}
lRet = RegSetValueExA(hKey, name, 0, type, pData, nLen);
if (ERROR_SUCCESS != lRet)
{
err = GetLastError();
DebugPrintA("RegSetValueExA error[%d]\n", err);
break;
}
} while (0);
if (hKey)
{
RegCloseKey(hKey);
}
return err;
}
读注册表
BOOL CUtils::GetRegisterValue(HKEY key, LPCSTR path, LPCSTR name, std::string& strAccessStream)
{
HKEY hKey = NULL;
bool bIsok = false;
do
{
long lRet = RegCreateKeyExA(key, (LPCSTR)path, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WOW64_64KEY, NULL, &hKey, NULL);
if (ERROR_SUCCESS != lRet)
{
DebugPrintA("RegCreateKeyExA=%d", GetLastError());
break;
}
DWORD len = 0;
lRet = RegQueryValueExA(hKey, name, 0, NULL, NULL, &len);
if (ERROR_SUCCESS != lRet)
{
DebugPrintA("RegQueryValueExA=%d", lRet);
break;
}
if (len == 0)
{
DebugPrintA("RegQueryValueExA datalen=%d", len);
break;
}
strAccessStream.resize(len);
BYTE* pData = (BYTE*)&strAccessStream.at(0);
lRet = RegQueryValueExA(hKey, name, 0, NULL, pData, &len);
if (ERROR_SUCCESS != lRet)
{
DebugPrintA("RegQueryValueExA=%d", lRet);
break;
}
bIsok = true;
} while (0);
if (hKey)
{
RegCloseKey(hKey);
}
return bIsok;
}