转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
对注册表进行编程的“捷径”         ★★★★

对注册表进行编程的“捷径”

作者:闵涛 文章来源:闵涛的学习笔记 点击数:782 更新时间:2009/4/23 14:59:08
  我们知道,在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_MACHINE\Software](每个子键与上一子键之间必须空一行,且子键用[]括起来)
    
    @=""(@表示键值名为“默认”,键值为空串)
    …… ……

   [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion]

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

   [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\SetupX\Cert]

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

   [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\MS-DOSOptions\Smartdrv]

    …… ……

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

  例如:可用以下代码将指定的子键路径[HKEY_LOCAL_MACHINE\Software]的默认值修改为字符串:“此处值已修改!”

stt = "HKEY_LOCAL_MACHINE"
a = Shell("regedit /e c:\windows\temp\temp.txt " & stt)
'导出要修改的注册表分支
If a = 0 Then
 MsgBox "导出错误!": End '可能是子键名称错误
 regpath = "[" + stt + "]"
 Open "c:\windows\temp\temp.txt" For Input As #1
 Open "c:\windows\temp\temp1.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_MACHINE\Software]中原来未设置默
     认值,此时相当于在文件#1处插入b$。
 Loop Until EOF(1)
 Close
 a = Shell("regedit c:\windows\temp\temp1.txt ")
  '将修改后的内容导入到注册表中
 If a = 0 Then MsgBox "修改失败!": End

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


156


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台