[英]Reading Windows Registry Key REG_BINARY in c++
我正在嘗試讀取C ++中的注冊表項,這是我的功能:
DWORD regkey()
{
HKEY hKey;
DWORD dwDisp = REG_BINARY;
DWORD dwSize = sizeof(dwDisp);
DWORD dwValue = 0;
DWORD dwReturn;
DWORD dwBufSize = sizeof(dwDisp);
if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HERE\\IS\\THE\\REGKEY",0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS)
{
DWORD error = RegQueryValueEx(hKey,L"key",0,0, (LPBYTE)&dwReturn, &dwBufSize);
if(error == ERROR_SUCCESS)
{
return dwReturn;
}
}
RegCloseKey(hKey);
return 0;
}
但它什么也沒返回...請幫助我。
注冊表函數將返回有意義的錯誤代碼,它可以幫助您診斷問題。 嘗試保留該代碼:
{
HKEY hKey;
DWORD dwDisp = REG_BINARY;
DWORD dwSize = sizeof(dwDisp);
DWORD dwValue = 0;
DWORD dwReturn;
DWORD dwBufSize = sizeof(dwReturn);
DWORD dwError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HERE\\IS\\THE\\REGKEY",0, KEY_READ, &hKey) ;
if( dwError == ERROR_SUCCESS)
{
dwError = RegQueryValueEx(hKey,L"key",0,0, (LPBYTE)&dwReturn, &dwBufSize);
if(error == ERROR_SUCCESS)
{
// it worked!
}
else
{
// it failed to read, check dwError for the error code
dwResult = 0;
}
RegCloseKey(hKey);
}
else
{
// it failed to open, check dwError for the error code
dwResult = 0;
}
return 0;
}
如果使用的是Visual Studio,則可以中斷任何故障點並在監視窗口中評估dwError,hr
。 ,hr
格式說明符使調試器為您查找錯誤代碼,並提供描述問題的有意義的字符串。 那應該使您了解出了什么問題。
如果您可以告訴我們哪個功能失敗了,以及您從該功能找回了哪些代碼,我們也許可以提供更詳細的幫助。 就目前而言,您已經向我們展示了一些猜謎游戲。 也許您拼錯了注冊表項名稱或給出了錯誤的路徑。 您的代碼似乎暗示您正在傳遞注冊表項RegQueryValueEx()
,但您要向該函數傳遞值名稱,而不是鍵名稱。 可能您的訪問權限有問題,因為您正在查看注冊表的受保護部分,而沒有作為具有足夠權限讀取該密鑰的帳戶運行。 (因此,您應該傳遞KEY_READ
而不是KEY_ALL_ACCESS
。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.