簡體   English   中英

在C ++中將DWORD值寫入注冊表

[英]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);

我做了一些基本調試,發現調用RegSetValueExiResult的值是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM