RegOpenKeyEx、RegOpenKey FormatMessage

来源:互联网 发布:安卓微信多开软件 编辑:程序博客网 时间:2024/06/17 03:35

今天读注册表时一直返回错误,使用RegOpenKeyEx返回5 失败,而RegOpenKey返回0 成功

查了N多文章未果...

 

RegOpenKeyEx说明

 http://feed.yeeyan.com/articles/view/17986/4844

 

里面提到返回值:

如果函数调用成功,返回值ERROR_SUCCESS.
否则,函数将返回一个定义于Winerror.h的非零错误码.可以使用FormatMessage函数以及FORMAT_MESSAGE_FROM_SYSTEM标识符来得到一个常规的错误描述.
FormatMessage的使用方法参见或MSDN
http://www.cppblog.com/bidepan2023/archive/2008/02/03/42433.html
 
因此,用FormatMessage解析错误码
 HKEY hResult = NULL;
 LONG nResult = RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE", KEY_READ, NULL, &hResult);
 TCHAR *buffer;
 //DWORD error = ERROR_DS_OBJ_STRING_NAME_EXISTS;
 ::FormatMessage(
  FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
  NULL,
  nResult,
  0,
  ( LPTSTR )&buffer,
  0,
  NULL );
 ::MessageBox( NULL, buffer, NULL, 0 );
 LocalFree( buffer ); 
 
得到错误信息为:拒绝访问
...
不明白为啥拒绝访问