试图在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