由于需要要把一个注册表文件导出,结果在使用RegSaveKey时一直提示错误,返回值是1314,好像是权限问题,于是加入调整权限的代码
- HANDLE hToken = NULL;
- LUID sedebugnameValue ;
- TOKEN_PRIVILEGES tkp;
- if( !OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken) )
- {
- cout<<"OpenProcessToken failed";
- return 0;
- }
- if(!LookupPrivilegeValue(NULL,SE_BACKUP_NAME,&sedebugnameValue))
- {
- cout<<"LookupPrivilegeValue failed";
- return 0;
- }
- tkp.PrivilegeCount = 1;
- tkp.Privileges[0].Luid = sedebugnameValue;
- tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
- if(!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL))
- {
- cout<<"AdjustTokenPrivileges";
- return 0;
- }
- CloseHandle(hToken);
这会就没问题了,注意要SE_BACKUP_NAME权限