今天读注册表时一直返回错误,使用RegOpenKeyEx返回5 失败,而RegOpenKey返回0 成功
查了N多文章未果...
RegOpenKeyEx说明
http://feed.yeeyan.com/articles/view/17986/4844
里面提到返回值:
如果函数调用成功,返回值ERROR_SUCCESS.
否则,函数将返回一个定义于Winerror.h的非零错误码.可以使用FormatMessage函数以及FORMAT_MESSAGE_FROM_SYSTEM标识符来得到一个常规的错误描述.
否则,函数将返回一个定义于Winerror.h的非零错误码.可以使用FormatMessage函数以及FORMAT_MESSAGE_FROM_SYSTEM标识符来得到一个常规的错误描述.
因此,用FormatMessage解析错误码
HKEY hResult = NULL;
LONG nResult = RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE", KEY_READ, NULL, &hResult);
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 );
//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 );
得到错误信息为:拒绝访问
...
不明白为啥拒绝访问