RegRestoreKey总是调用失败?

MissionSuccess 2011-11-22 04:48:10
以下是代码,发现返回值是5.
BOOL RestoreKey( HKEY hBootKey, LPCTSTR lpszKeyName, LPCTSTR lpszPath )
{
assert( hBootKey );
//assert( lpszKeyName );
assert( lpszPath );
BOOL bRet = FALSE;

//1. 申请备份权限
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if( !OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) )
return FALSE;
LookupPrivilegeValue( NULL, SE_RESTORE_NAME, &tkp.Privileges[0].Luid );//申请SE_RESTORE_NAME 权限
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges( hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0 );

//2. Open key
HKEY hKey = NULL;
if ( ERROR_SUCCESS != RegOpenKeyEx(hBootKey, lpszKeyName, NULL, KEY_ALL_ACCESS, &hKey) )
return FALSE;

//3. Restore Key
/*if ( ERROR_SUCCESS != RegRestoreKey(hKey, lpszPath, FALSE) )
{
bRet = FALSE;
}*/
int nRet = RegRestoreKey( hKey, lpszPath, FALSE ); //返回5
if ( ERROR_SUCCESS != nRet )
{
bRet = FALSE;
}
else
bRet = TRUE;

RegCloseKey( hKey );
return bRet;
}
...全文
179 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang20080 2012-07-06
  • 打赏
  • 举报
回复
参考一下,谢谢!
MissionSuccess 2011-11-22
  • 打赏
  • 举报
回复
谢谢楼上,搞定了。
Lactoferrin 2011-11-22
  • 打赏
  • 举报
回复
RegRestoreKey( hKey, lpszPath, REG_FORCE_RESTORE);
MissionSuccess 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lactoferrin 的回复:]
REG_FORCE_RESTORE
[/Quote]
error C2664: “LookupPrivilegeValueA”: 不能将参数 2 从“long”转换为“LPCSTR”
MissionSuccess 2011-11-22
  • 打赏
  • 举报
回复
那怎么写才可以啊?
Lactoferrin 2011-11-22
  • 打赏
  • 举报
回复
REG_FORCE_RESTORE
Eleven 2011-11-22
  • 打赏
  • 举报
回复
权限问题
oyljerry 2011-11-22
  • 打赏
  • 举报
回复
5 --- Access Deny,估计你的程序权限不够,或者系统不允许你操作这个注册表

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧