在学习用c++进行注册表备份与恢复时。
参考网上资料进行学习。
http://www.cnblogs.com/john-h/p/5886870.html
备份与恢复均要申请权限。
void RegistryFunctionLib_class::Get_SE_BACKUP_NAME_Power(){
HANDLE hToken = NULL;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
//error
}
if (!LookupPrivilegeValue(NULL, SE_BACKUP_NAME, &sedebugnameValue))
{
//error
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL))
{
//error
}
CloseHandle(hToken);
}
以管理员权限运行程序后备份成功,而在进行恢复时却始终不成功。
于是去msdn官网查询函数RegRestoreKey,发现标识位并非是true或false。