函数参考


_WinAPI_RegRestoreKey

读取指定文件的注册表信息,并将其复制到指定键.

#Include <WinAPIEx.au3>
_WinAPI_RegRestoreKey ( $hKey, $sFile )

参数

$hKey 注册表项句柄. 句柄由 _WinAPI_RegCreateKey() 或 _WinAPI_RegOpenKey() 函数返回.
 参数也可以为下列预定义项:
 $HKEY_CLASSES_ROOT --- 定义文件类型和类型相关的属性
 $HKEY_CURRENT_CONFIG --- 包含本地计算机系统目前的硬件配置文件
 $HKEY_CURRENT_USER --- 定义当前用户的参数选择
 $HKEY_LOCAL_MACHINE --- 定义计算机物理状态,包括总线类型、系统内存数据、并安装的硬件和软件
 $HKEY_USERS --- 确定本地计算机新用户定义默认用户配置,并作为当前用户的用户配置
$sFile 件的名称. 通常是使用_WinAPI_RegSaveKey() 函数创建的文件.

返回值

成功: 返回 1.
失败: 返回 0,设置 @error 标志为非 0 值, @extended 标志可能包含系统错误代码.

注意/说明

有两种不同的注册表配置单元文件格式.
当前操作系统创建的注册表配置单元通常不能被早前的系统加载.
 $sFile 指定文件的新信息覆盖由 $hKey 参数指定项的内容,除键名以外.
 如果 $hKey 参数指定的子项是打开的,_WinAPI_RegRestoreKey() 失败.

相关

详情参考

在MSDN中搜索


示例/演示


#Include <APIConstants.au3>
#Include <WinAPIEx.au3>

Opt('MustDeclareVars', 1)

Global $aPrivileges[2] = [$SE_BACKUP_NAME, $SE_RESTORE_NAME]
Global $aAdjust, $hToken, $hKey

; Enable "SeBackupPrivilege" and "SeRestorePrivilege" privileges to save and restore registry hive
$hToken = _WinAPI_OpenProcessToken(BitOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY))
_WinAPI_AdjustTokenPrivileges($hToken, $aPrivileges, $SE_PRIVILEGE_ENABLED, $aAdjust)
If @error Or @extended Then
    MsgBox(16, 'Error', 'You do not have the required privileges.')
    Exit
EndIf

; 保存 "HKEY_CURRENT_USER\Software\AutoIt v3" 到 reg.dat
$hKey = _WinAPI_RegOpenKey($HKEY_CURRENT_USER, 'Software\AutoIt v3', $KEY_READ)
If _WinAPI_RegSaveKey($hKey, @ScriptDir & '\reg.dat', 1) Then
    MsgBox(64, '', '"HKEY_CURRENT_USER\Software\AutoIt v3" has been saved to reg.dat.')
Else
    MsgBox(16, '', _WinAPI_GetErrorMessage(@extended))
EndIf
_WinAPI_RegCloseKey($hKey)

; 还原 "HKEY_CURRENT_USER\Software\AutoIt v3" 到 "HKEY_CURRENT_USER\Software\AutoIt v3 (副本)"
$hKey = _WinAPI_RegCreateKey($HKEY_CURRENT_USER, 'Software\AutoIt v3 (Duplicate)', $KEY_WRITE)
If _WinAPI_RegRestoreKey($hKey, @ScriptDir & '\reg.dat') Then
    MsgBox(64, '', '"HKEY_CURRENT_USER\Software\AutoIt v3" has been restored to "HKEY_CURRENT_USER\Software\AutoIt v3 (Duplicate)".')
Else
    MsgBox(16, '', _WinAPI_GetErrorMessage(@extended))
EndIf
_WinAPI_RegCloseKey($hKey)

; Restore "SeBackupPrivilege" and "SeRestorePrivilege" privileges by default
_WinAPI_AdjustTokenPrivileges($hToken, $aAdjust, 0, $aAdjust)
_WinAPI_CloseHandle($hToken)

FileDelete(@ScriptDir & '\reg.dat')