[英]Writing a DWORD value to registry in C++
我試圖在C ++中以編程方式將DWORD值寫入注冊表。
我做了一些搜索,我發現之前已經問過這個問題了。 我試圖按照他們的解決方案,但提出了一個非常令人沮喪的問題,據我所知,他們的解決方案沒有解決這個問題。
這是我的代碼:
HKEY hKey;
LPCWSTR sKeyPath;
int iResult;
sKeyPath = L"Software\\ABI\\";
iResult = RegOpenKeyEx(HKEY_CURRENT_USER, sKeyPath, NULL, KEY_ALL_ACCESS, &hKey);
DWORD value = 0x00000003;
iResult = RegSetValueEx(hKey, L"Test", NULL, REG_DWORD, (const BYTE*)value, sizeof(value));
RegCloseKey(hKey);
我做了一些基本調試,發現調用RegSetValueEx
后iResult
的值是998。 我確信這個密鑰存在於Windows注冊表中,因為我使用regedit.exe手動創建它以進行測試。 DWORD“Test”的值最初是0x00000009,在運行程序后沒有變化。
我不確定我錯在哪里。
任何幫助,將不勝感激。
PS我沒有設法在網上找到任何有用的網站錯誤998.我發現的唯一參考提到這是處理注冊表時可以得到的最嚴重的錯誤。
PPS順便說一句,我在Windows 8上運行這個程序。我不認為這會改變任何東西,但我之前遇到過一些奇怪的安全問題。
您需要傳遞value
的地址 :
iResult = RegSetValueEx(hKey,
L"Test",
NULL,
REG_DWORD,
(const BYTE*)&value, // Change made here.
sizeof(value));
錯誤代碼998
表示:
對內存位置的訪問無效。
當未傳遞value
的地址時,其實際值( 3
)被用作存儲器地址,從而導致失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.