关于调用api操作注册表的问题
#include <windows.h>
#include <Winerror.h>
#include <iostream>
using namespace std;
#pragma comment (lib, "Advapi32.lib")
int main()
{
HKEY RootKey = HKEY_LOCAL_MACHINE; // 访问的key
HKEY OperateKey; // 需要进行操作的key
LPCWSTR SubKey = TEXT("Software\Microsoft\Windows\CurrentVersion"); // 子key
LPCWSTR ValueName = TEXT("SM_GamesName"); // value的名称
LONG ERROR_FLAG; // 错误标志
LPBYTE data = 0;
LPDWORD length = 0;
ERROR_FLAG = RegOpenKeyEx( RootKey,SubKey ,0,KEY_ALL_ACCESS,&OperateKey );
if ( ERROR_FLAG != ERROR_SUCCESS )
{
cerr <<"打开注册表失败1" <<endl;
cerr <<"code "<<ERROR_FLAG;
return 1;
}
return 0;
}
我现在只是试验了打开操作,但是返回失败,error值为2,我查了一下,表示文件错误。
我参考了msdn,函数使用,参数传递都没有错误,那位能帮我看一下,到底是什么地方有错误?
#include <Winerror.h>
#include <iostream>
using namespace std;
#pragma comment (lib, "Advapi32.lib")
int main()
{
HKEY RootKey = HKEY_LOCAL_MACHINE; // 访问的key
HKEY OperateKey; // 需要进行操作的key
LPCWSTR SubKey = TEXT("Software\Microsoft\Windows\CurrentVersion"); // 子key
LPCWSTR ValueName = TEXT("SM_GamesName"); // value的名称
LONG ERROR_FLAG; // 错误标志
LPBYTE data = 0;
LPDWORD length = 0;
ERROR_FLAG = RegOpenKeyEx( RootKey,SubKey ,0,KEY_ALL_ACCESS,&OperateKey );
if ( ERROR_FLAG != ERROR_SUCCESS )
{
cerr <<"打开注册表失败1" <<endl;
cerr <<"code "<<ERROR_FLAG;
return 1;
}
return 0;
}
我现在只是试验了打开操作,但是返回失败,error值为2,我查了一下,表示文件错误。
我参考了msdn,函数使用,参数传递都没有错误,那位能帮我看一下,到底是什么地方有错误?
...全文
相关推荐
java 读取注册表(源码 + jar + dll)
这个JAR文件中的类负责与`jRegistryKey.dll`进行交互,它封装了对注册表的读写操作,使得Java开发者能够通过简单的API调用来实现注册表的访问。
易语言取当前打开的注册表路径
这通常涉及到调用系统的API函数,如RegOpenKeyEx、RegQueryInfoKey等,来与注册表进行交互。
VB6在64位的Windows7环境下对注册表的操作之API篇
但是,如果需要与现有的软件集成或进行更复杂的注册表操作时,这种方法就显得不够灵活了。API法则是通过调用Windows提供的API函数来直接操作注册表。
注册表操作api
**封装API**:`注册表操作api.cs`文件可能包含一个类库,该类库封装了上述所有操作,提供了一套易于使用的API接口,使得开发者可以通过简单的调用来完成复杂的注册表操作。10.
使用NT本机API进行注册表操作
然而,由于NT API的底层性质,误用可能会导致严重问题,因此务必谨慎操作并确保对注册表的操作有充分理解。在生产环境中,始终建议备份注册表并确保有足够的错误处理机制。


