用API修改注册表的完整模块[9]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 goodname008 的 blog

        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 型数字

本文关键:VB API 注册表 注册表大师
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top