加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用vb对注册机进行编程

发布时间:2020-12-17 07:47:08 所属栏目:百科 来源:网络整理
导读:在VB中,可以用 SHELL 函数来执行一个可执行文件。而对注册表的访问可以方便地用 Regedit.exe 命令将它与一文本文件联系进来。这样一来,我们无需掌握高深的API函数,需编程对该文本文件进行处理即可。 首先,注册表中各个主键和子键的键值,一般来说有以下
在VB中,可以用 SHELL 函数来执行一个可执行文件。而对注册表的访问可以方便地用 Regedit.exe 命令将它与一文本文件联系进来。这样一来,我们无需掌握高深的API函数,需编程对该文本文件进行处理即可。

  首先,注册表中各个主键和子键的键值,一般来说有以下几种类型:

  ①REG_SZ(普通字符串)

  ②REG_EXPAND_SZ(可展开式字串)

  ③REG_BINARY(二进制)

  ④REG_DWORD(长整数型,即十六进制值)。

  他们在导出的注册表文件中的表示形式不尽相同。具体实例请参见后文。

  其次,让我们来熟悉一下Regedit命令的用法及有关参数:

   REGEDIT filename1

   REGEDIT /E filename3 [regpath1]

   REGEDIT /D regpath2

   filename1 指定将要输入到注册表中的文件。

   /E filename3 指定注册表的输出文件名。

   regpath1 指定将要输出的注册表的键名(缺省为输出整个注册表)

   /D regpath2 指定将要删除的注册表的键名

  其中导出或导入的文件为一文本文件。格式如下:(小括号内为注释,……表示此处有省略)

   REGEDIT4 (必须以此开头,注意大小写)

   HKEY_LOCAL_MACHINESoftware          @=""(@表示键值名为“默认”,键值为空串)     …… ……

   [HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion]

    "InstallType"=hex:03,00 (表示键名为"InstallType",键值为REG_BINARY(即二进制)类型 03 00)     "DevicePath"="C:WINDOWSINF"     (键"DevicePath"是普通字符串,即 REG_SZ 类型。当字符串中含有路径“”等特殊字符时,约定      用“”代替“”,用“n”和“"”来代替回车和 "字符)     …… ……

   [HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionSetupSetupXCert]

    "RG2CATDB Return"=dword:00000000(dword:表示该键值REG_DWORD(长整数型,即十六进制值)

   [HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionMS-DOSOptionsSmartdrv]

    …… ……

   "Autoexec.Bat"="LoadHigh %WINDIR%SmartDrv"(含有一对%的字符串是可展开式字串,即REG_EXPAND_SZ类型,此处%WINDIR%表示WINDOWS的工作目录)

  例如:可用以下代码将指定的子键路径[HKEY_LOCAL_MACHINESoftware]的默认值修改为字符串:“此处值已修改!” stt = "HKEY_LOCAL_MACHINE" a = Shell("regedit /e c:windowstemptemp.txt " & stt) '导出要修改的注册表分支 If a = 0 Then  MsgBox "导出错误!": End '可能是子键名称错误  regpath = "[" + stt + "]"  Open "c:windowstemptemp.txt" For Input As #1  Open "c:windowstemptemp1.txt" For Output As #2  regwrite = flase '是否是要修改的行  Print #2,"REGEDIT4" '写入文件头,注意必须是大写  Print #2,""  Do   Line Input #1,aa$   b$ = aa$   If regwrite = True Then '说明此行是需要修改的行    b$ = "@=""默认值已修改!"""    Print #2,b$    MsgBox "原来的值为:" & Mid$(aa$,3) & "即将改为:" &     Mid$(b$,3),vbOKOnly,"注册表变化"   End If   If aa$ = regpath Then    Print #2,b$    regwrite = True    '说明下一行为所要修改的行,以便下次循环时对b$进行修改   Else    regwrite = flase '不是要修改的行   End If   ' If Left(aa$,2) <> "@=" And       b$ = "@=""默认值已修改!""" Then     Print #2,aa$     '如果子键[HKEY_LOCAL_MACHINESoftware]中原来未设置默      认值,此时相当于在文件#1处插入b$。  Loop Until EOF(1)  Close  a = Shell("regedit c:windowstemptemp1.txt ")   '将修改后的内容导入到注册表中  If a = 0 Then MsgBox "修改失败!": End

  按以上思路,我们可以很方便快捷地对注册表进行增、删、改等操作,是不是很简单?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读