簡體   English   中英

使用RegGetValue()讀取Windows注冊表項“ SOFTWARE \\ Microsoft \\ Windows \\ CurrentVersion \\ Run”將返回錯誤代碼2

[英]Reading the Windows registry key “SOFTWARE\Microsoft\Windows\CurrentVersion\Run” using RegGetValue() returns error code 2

使用RegGetValue()讀取Windows注冊表項“ SOFTWARE \\ Microsoft \\ Windows \\ CurrentVersion \\ Run”將返回錯誤代碼2。

我已經坐了幾個小時來調試這個問題,但是還沒有找到解決方案。

這是我用來檢索名為“ test”的注冊表值的代碼:

long result = RegGetValue(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), TEXT("test"), RRF_RT_ANY, &dwType, (PVOID)&buff, &size);

下面是我已將注冊表值“ test”添加到“運行”鍵(如上所述)的圖片。

我得到的錯誤代碼是2,表示無效的文件。

應該提到的是,本地主機正在運行Windows 10 Pro x64。

造成這種混亂的原因是什么?

在此處輸入圖片說明

修改后的代碼:

使用KEY_WOW64_64KEY標志后,我仍然收到錯誤代碼2。

RegCreateKeyEx(
        HKEY_LOCAL_MACHINE,
        TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"),
        NULL,
        NULL,
        REG_OPTION_NON_VOLATILE,
        KEY_ALL_ACCESS | KEY_WOW64_64KEY,
        NULL,
        &hKey,
        &dwStatus) 

long result = RegGetValue(hKey, NULL, TEXT("test"), RRF_RT_ANY, &dwType, (PVOID)&buff, &size);

問題

您很可能試圖從32位應用程序訪問64位注冊表視圖。

默認情況下,在WOW64上運行的32位應用程序訪問32位注冊表視圖,而64位應用程序訪問64位注冊表視圖。 以下標志使32位應用程序可以在64位注冊表視圖中訪問重定向的密鑰,而64位應用程序可以在32位注冊表視圖中訪問重定向的密鑰。 這些標志對共享注冊表項無效。

您可以在x64模式下重建應用程序,也可以指定所需的注冊表視圖。

HKEY key;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &key);
long result = RegGetValue(key, nullptr, TEXT("test"), RRF_RT_ANY, &dwType, (PVOID)&buff, &size);

有關更多信息: 訪問備用注冊表視圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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