|
发表于 2020-7-18 09:45:01
|
显示全部楼层
没看出问题来。
试试我这个:
// 注册表改名
int RegReName(TCHAR oldKey[], TCHAR newKey[])
{
static int i;
HKEY hk;
// 备份旧键
if(EnablePrivilege(SE_BACKUP_NAME,TRUE) == 0)
{
if (RegOpenKey(HKEY_LOCAL_MACHINE, oldKey, &hk) == ERROR_SUCCESS)
{
if (RegSaveKey(hk, "bak", NULL) != ERROR_SUCCESS)
if (i == 0) i = 1;
}
}
// 将旧键恢复到新键上
if(EnablePrivilege(SE_RESTORE_NAME,TRUE) == 0)
{
if (RegOpenKey(HKEY_LOCAL_MACHINE, newKey, &hk) != ERROR_SUCCESS)
{
RegCreateKey(HKEY_LOCAL_MACHINE, newKey, &hk);
}
if (RegRestoreKey(hk, "bak", 0x00000008L) != ERROR_SUCCESS)
if (i == 0) i = 2;
}
// 删除旧键
RegDelete(HKEY_LOCAL_MACHINE, oldKey);
DeleteFile("bak");
RegCloseKey(hk);
return i;
} |
|