发信人: cybercowboy( )
整理人: nyxi(2001-07-26 02:36:18), 站内信件
|
玩过WINDOWS注册表的人都知道,在WINDOWS中要修改注册表,一是可以用REGEDIT即注册表编辑器,另外可以用.reg文件来导入注册表,特别是后一种方法,即通过用.reg的方法,可以生成新的键,也可以修改已经存在的键值,这种方式对于想对注册表做局部的修改,是非常方便的,而且在导入时不需要运行REGEDIT,也不需要对注册表有什么了解,只要双击.reg就能完成相应的修改。但如果是想删除掉注册表中某个已有的键呢?是不是只能用REGEDIT呢?能否也象新增或修改注册表一样,用导入文件的方式呢?
这个问题,就是说是否有用导入文件的方法删除注册表的某个键的方法,有不少网友在本版提问过多次,好象还没有得到肯定的答案,我以前一直也觉得不太可能,用.reg虽然可以创建和修改键值,但要删除却好象是不行的,.reg的工作过程是这样的,当双击导入的时候,如果.reg中的键不存在,则新建该键并添加键值,如果该键已经存在,则修改键值,因此,利用.reg基本上应该是没办法删除键的。
前几天在分析一个叫Clickomania!的智力游戏时,偶尔看到里面有一个叫uninst.inf的文件,打开一看,原来这个文件就是用来删除注册表中的键的!这个inf的内容如下:
---------------------------------------------------
; Uninstall Clickomania! Registry Entries
; If you want to remove Clickomania, delete the Directory
; with the program and use this file this way:
; Mark the file -> Context menu -> Install
; All the registry entries will be deleted this way and no left overs
; of Clickomania remain on your system.
[version]
signature="$CHICAGO$"
SetupClass=BASE
[DefaultInstall]
DelReg=Uninstal.Delreg
[Uninstal.Delreg]
HKLM,"SOFTWARE\MSC-Soft\Clickomania"
----------------------------------------------------
经过试验,确实就是删除这个游戏在注册表中所建立的键的,这个键就是
HKEY_LOCAL_MACHINE\SOFTWARE\MSC-Soft\Clickomania
对这个inf文件点右键/安装之后,上面说的这个键就会从注册表中删除。
现在我们再来分析一下这个文件吧,看看上面的这个inf文件,除了注释,其实东西也不多,由于没有找到更进一步的资料,所以这里我们也只能加一点猜测,
[version]
signature="$CHICAGO$"
SetupClass=BASE
这一部分,是相对于版本来说吧,因为以前WIN9X的代号就叫CHICAGO,所以应该这一部分是告诉系统,这是对于WIN9X系统的吧,反正不要改它就行了,
[DefaultInstall]
DelReg=Uninstal.Delreg
这一部分,应该是具体的默认安装动作,而在这里,安装动作是DelReg,就是删除注册表中的键的意思吧。而等号后的Uninstal.Delreg,应该是指删除的具体键,参看
[Uninstal.Delreg]这一部分吧?
[Uninstal.Delreg]
HKLM,"SOFTWARE\MSC-Soft\Clickomania"
这里就是真正要删除的键了,注意,这里对键的表示法有点特别,这个键是位于注册表的根目录中的HKEY_LOCAL_MACHINE这个主键中的,但在表示的时候是表示为HKLM,就是上面这个主键的表示方法,经过试验,HKEY_CURRENT_USER表示为HKCU,其他的各个主键大家自己去试验吧,如果有知道这种表示方法详细资料的网友,希望在这里提供一些补充。
指定了主键之后,逗号后面就是用双引号括起来的要删除的键,这个游戏是在注册表中建立了HKEY_LOCAL_MACHINE\SOFTWARE\MSC-Soft\Clickomania这个键,照上面的方法删除,是会把HKEY_LOCAL_MACHINE\SOFTWARE\MSC-Soft\Clickomania这个键删除,但还是会留着HKEY_LOCAL_MACHINE\SOFTWARE\MSC-Soft这个键的,所以如果想把这个也删除,应该在[Uninstal.Delreg]这一节中加多一行
HKLM,"SOFTWARE\MSC-Soft"
这样连MSC-Soft这个键才会一起被删除。
所以,如果你想使用文件这种方法来删除注册表中的键,例如你想让你的菜鸟用户或朋友自己删掉注册表中的某个键却又怕他们自己操作注册表编辑器误操作而造成大的破坏的话,现在就可以用这种方法了,只要照上面介绍的方法写一个inf文件,把要删除的键按照要求的格式写在上面的[Uninstal.Delreg]这一节中然后把这个inf文件交给用户叫他们右击,并选择右键菜单上的安装就行了,是不是很方便?呵呵,终于解决了一个悬案,如果有什么问题,欢迎大家讨论:)
----
横眉冷对千夫指,俯首甘为孺子牛。
——CyberCowBoy
cybercowboy刚才介绍了一个他自己琢磨出的方法。我也来介绍一个看来的方法,很巧妙。
为了说明这个方法,我们先创建如下test.reg文件:
REGEDIT4
[HKEY_USERS\Software\test\subtest1]
"aaa"="1"
"bbb"=hex:df,da
我们可以在注册表中生成这样一个信息。然后,我们要把subtest1键下的值删除,该怎么作呢?稍微改动一下刚才那个文件就可以了:
REGEDIT4
[-HKEY_USERS\Software\test\subtest1]
"aaa"="1"
"bbb"=hex:df,da
注意那个红色的“-”号。加上它,就可以把subtest1子键下的值连同其本身全部删除。
这个方法更简单,但不适合Win95。另外,提醒大家,试验的时候最好备份一下注册表,免得因为不熟悉出现错误而造成损失(经验之谈啊!)。
----
Say you, Say me,
Say you together,
with our PC. |
|