success = regclosekey(hkey)
exit function
end if
success = regsavekey(hkey, filename, lpattr)
if success = 0 then savekey = true else savekey = false
success = regclosekey(hkey)
end function
'-------------------------------------------------------------------------------------------------------------
'- 导入注册表关键字的值
'- 参数说明: keyroot--根类型, keyname--子项名称, filename--导入的文件路径及文件名(原始数据库格式)
'-------------------------------------------------------------------------------------------------------------
public function restorekey(keyroot as keyroot, keyname as string, filename as string) as boolean
on error resume next
if enableprivilege(se_restore_name) = false then
restorekey = false
exit function
end if
success = regopenkeyex(keyroot, keyname, 0&, key_all_access, hkey)
if success <> 0 then
restorekey = false
success = regclosekey(hkey)
exit function
end if
success = regrestorekey(hkey, filename, reg_force_restore)
if success = 0 then restorekey = true else restorekey = false
success = regclosekey(hkey)
end function
'-------------------------------------------------------------------------------------------------------------
'- 使注册表允许导入/导出
'-------------------------------------------------------------------------------------------------------------
private function enableprivilege(sename as string) as boolean
on error resume next
dim p_lngrtn as long
dim p_lngtoken as long
dim p_lngbufferlen as long
dim p_typluid as luid
dim p_typtokenpriv as token_privileges
dim p_typprevtokenpriv as token_privileges
p_lngrtn = openprocesstoken(getcurrentprocess(), token_adjust_privileges or token_query, p_lngtoken)
if p_lngrtn = 0 then
enableprivilege = false
exit function
end if
if err.lastdllerror <> 0 then
enableprivilege = false
exit function
end if
p_lngrtn = lookupprivilegevalue(0&, sename, p_typluid)
if p_lngrtn = 0 then
enableprivilege = false
exit function
end if
p_typtokenpriv.privilegecount = 1
p_typtokenpriv.privileges.attributes = se_privilege_enabled
p_typtokenpriv.privileges.pluid = p_typluid
enableprivilege = (adjusttokenprivileges(p_lngtoken, false, p_typtokenpriv, len(p_typprevtokenpriv), p_typprevtokenpriv, p_lngbufferlen) <> 0)
end function
'-------------------------------------------------------------------------------------------------------------
'- 将 double 型( 限制在 0--2^32-1 )的数字转换为十六进制并在前面补零
'- 参数说明: number--要转换的 double 型数字