試圖在XP SP3 x86上運行的Visual Studio 2010中編寫一個簡單的註冊表檢查腳本。Visual C++錯誤:無法找到RegGetValueA
沒有ERRS被套上打造,但在調試程序,出現以下錯誤退出:
The procedure entry point RegGetValueA could not be located in the dynamic link library ADVAPI32.dll
這裏是整個程序的代碼。
// #define _WIN32_WINNT 0x0501
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
long reg = RegQueryValueEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", NULL,NULL,NULL,NULL);
// if (reg!=ERROR_SUCCESS) MessageBox(0, "Error Opening Registry Key", "Error", 0);
return 0;
}
上述代碼中的註釋根據wmeyer的回答添加。
當取消註釋,代碼不與錯誤退出,但會引發不同的錯誤:
Debugging information for Test5.exe cannot be found or does not match. Binary was not built with debug information. Do you want to continue debugging?
如果我繼續,在MessageBox會彈出「錯誤打開註冊表項」。
我試着用以下三種其他方法替換RegQueryValueEx函數,一次一個。
我知道他們中的兩個人是唯一的,但我想看看錯誤是否會有所不同。
不是。
long reg = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_ALL_ACCESS, hKey);
// Vista+ PHKEY hKey;
long reg = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", hKey);
long reg = RegGetValue(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run", "", RRF_RT_ANY, NULL, NULL,NULL);
我已經失去了幾個小時試圖找出其他一些錯誤,如「不能從‘字符’到‘LPCWSTR’轉換參數1」 - 這是由changing the configuration 解決,「無法找到或打開PDB文件「,由changing the configuration解決。
如此反覆,問題是明確的:
- 如何處理錯誤?
- 當前衛沒有Vista方法開始時,wmeyer建議添加標題以過濾僅限Vista的方法有哪些幫助?爲什麼程序仍然無法工作?
我的電腦肯定有Windows/syatem32中的advapi.dll文件。
編輯: 當答案指出它的不清楚時,完全重寫了這個問題。
最初我曾假設Visual Studio 2010不向後兼容XP。
我一直強烈地被告知這是不正確的,但仍然無法讓VS工作。
有肯定是在Windows的32位版本的'advapi32.dll'。使用Visual Studio 2010編寫的應用程序絕對可以在Windows XP上運行。你安裝了什麼服務包到你的XP安裝? – 2011-02-28 09:56:28
VS2010當然可以用來編寫Windows 7程序,而那些不會在XP上運行。使用'/ D_WIN32_WINNT = 0x0501'來隱藏編譯器的Vista和更高版本功能。 – MSalters 2011-02-28 10:19:16
VS 2010完全支持WinXP SP2或更新版本,只確保您不使用WinXP未提供的API調用。如果您需要在不使用SP2的情況下支持WinXP,或者甚至是Win2k,請查看http://stackoverflow.com/questions/2484511/can-i-use-visual-studio-2010s-c-compiler-with-visual-studio-2008s- c-runtime/3502056#3502056 – Suma 2011-03-02 13:20:06