ITPub博客

首页 > Linux操作系统 > Linux操作系统 > windowXP注册表学习

windowXP注册表学习

原创 Linux操作系统 作者:zhengnx 时间:2010-04-19 20:14:19 0 删除 编辑

regedit

HKEY_CLASSES_ROOT

是基层类别键,用于定义系统中所有已经注册的文件扩展名,文件类型,文件图标等HKEY_CURRENT_USER

用于定义当前用户的所有权限HKEY_LOCAL_MACHINE

用于定义相对网络环境而言的本地计算机软硬件的全部信息HKEY_USERS

用于定义所用的用户信息,其中部分分支将映射到HKEY-CUQQENT-USER关键字中,大部分设置都可以通过控制面板来修改
HKEY_CURRENT_CONFIG

用于定义计算机的当前配置情况,实际上就是指向HKEY_LOCAL_MASHINEConfig结构中的某个分支的指针

-----------------

HKEY_CLASSES_ROOT中全面设定文件关联

HKEY_CLASSES_ROOT中全面设定文件关联

HKEY_CLASSES_ROOT是注册表中的一项RootKey。

其记录了多种类的信息。这里我们只说说基本的文件关联类。

展开该根项,应该看到很多很多子项。

最前面通常是*,这个子项比较关键。他代表所有的文件类型。
其后是一些类似于“.asf”,“.txt”这些项目代表了该扩展名对应的文件信息。
默认键值记录该扩展名文件属于哪一个类的文件类型。
比如.log和.txt都是属于txtfile类的文件类型。
修改HKEY_CLASSES_ROOTtxtfile下的东西就可以同时修改.log文件和.txt文件的相关参数。
展开后得到的子项中比较比较常见的有:
OpenWithList 这个目前还不是特别清楚,貌似是打开程序的列表。但是似乎不怎么管用。
Shell 这个就是打开该文件类型的操作
ShellEx 这个是打开该文件类型的外壳操作扩展
我们能改变的基本上只有Shell子项。
ShellEx子项因为是用ClassID来表示的,他们是安装某些特定的程序后注册的,因此,很难增加或修改。但是可以比
较容易地删除。

比如,我们知道avi文件在资源管理器里是可以进行预览的,但是当我们进入一个包含较多AVI文件的文件夹,速度会
变得比较慢。
流行的解决方法是Regsvr32 / u 掉某个DLL。(记不清楚了)
我们用ShellEx来解决。
展开:
HKEY_CLASSES_ROOT.aviShellEx{BB2E617C-0920-11d1-9A0B-00C04FC2D6C1}
把默认键由:
{c5a40261-cd64-4ccf-84cb-c394da41d590}
改为:
!{c5a40261-cd64-4ccf-84cb-c394da41d590}
即在前面加一个感叹号(别的符号也可以)。当我们需要的时候,删掉这个感叹号就可以了。

其他的操作可以近似地模仿。对于ShellEx内有比较多的ClassID的时候,可以一个一个地尝试。
(对于一些系统文件的关联,还需要在HKEY_CLASSES_ROOTSystemFileAssociations下删除一次)
(比如感叹号掉:HKEY_CLASSES_ROOTSystemFileAssociations.avishellexPropertyHandler可以去掉鼠标悬停的

提示和属性页面的摘要内容)

下面我们以Bat批处理文件为例说一说Shell操作的修改。
展开HKEY_CLASSES_ROOT.bat
看到默认的键值是Batfile,说明.bat扩展名文件属于batfile类的文件类型
于是,我们展开HKEY_CLASSES_ROOTbatfile
看到默认键值,是个中文的,放心的修改。这个就是文件类型的说明。
比如修改成:“MS-DOS批处理文件”
在这个位置其他的可选键有:
NoOpen 字符串 表示没有默认操作时显示警告框。可以参看HKEY_CLASSES_ROOTocxfileNoOpen
InfoTip 字符串 表示鼠标悬停的有关该文件的信息提示。
TileInfo 字符串 表示平铺视图下图标旁边的信息提示。
(比如我把它改为prop:Size;Create 则会显示Bat文件的大小和创建时间)

以下是子项:
DefaultIcon 这个表示了该类型的文件采用的默认图标。
通常这个值是:%SystemRoot%System32shell32.dll,-153
他表示使用系统更目录下System32shell32.dll的第153个图标。
DLL文件中可以以资源的方式包含若干图标。大家可以自定义一个文件夹,选择改变图标,然后选定某个DLL,就

可以看到它包含的所有图标了。(也可能一个都没有)看到的编号在这里从第一列开始向下,然后第二列。。。比如第

二列第二个编号就是5。
或者用一些工具,比如MicroAngelo,可以搜索所有DLL和EXE等包含图标资源的文件。

Shell 这个子项是我们的关键
展开Shell可以看到几个子项,每一个子项代表了一个Shell操作。
比如Open,代表打开,Edit代表编辑
Shell下的默认键值可以设定双击该类型文件执行的Shell操作。比如设定为Open。那么双击Bat文件就意味着执行

批处理。
然后我们展开其中一个子项。比如Open
默认键值是该操作的显示名称。我们改为:“执行批处理(&O)”
&O表示出现一个带下划线的O并设定为快捷键。
Open下含有一个叫Command的子项,其默认键值记录执行的操作。对于Bat文件来说。应该是:
"%1" %*
一些病毒木马会修改这个地方。(类似的有EXE,COM文件类型)大家就不要改了。
同样的修改Edit子项为“编辑批处理(&E)”

这样我们的Bat文件类型就修改得差不多了。

相关应用举例:
我想很多人都被U盘病毒所厌恶。刚开始很多人说用右键,选择“打开”就可以安全进入U盘。
其实是不正确的,一些U盘病毒可以在Autorun.inf中写入信息,去掉Open外壳操作,而替换成自己的Open操作。
因此,我们展开:
HKEY_CLASSES_ROOTFoldershellopen
把默认键值修改成:打开文件夹(&O)
这样,当我们在文件夹和驱动器上点击右键的时候,如果看到的是“打开”操作,那么就是有问题的。
如果看到的是“打开文件夹”操作,则可以放心地点击。因为不会有病毒那么笨,修改这么特殊的外壳操作名字

。

很多朋友都希望能够在文件夹图标上右键,选择从MS-DOS进入。
有很多优化软件提供这个功能,但是名字通常都是叫“DOS 在这里”,名字很不好。
我们可以DIY一个。展开:
HKEY_CLASSES_ROOTDirectoryshell
新建MSDOS子项,输入默认键值为:“用命令行打开(&L)”
然后在MSDOS下新建Command子项,输入默认键值为:“cmd.exe /k "cd %L"”

类似的我们可以DIY一个DLL文件的注册和卸载外壳操作。
留给大家自己解决~~~
[@more@]

HKEY_CLASSES_ROOT

  HKEY_CLASSES_ROOT其实就是HKEY_LOCAL_MACHINESOFTWAREClasses,但是在HKEY_CLASSES_ROOT窗编辑相对来说显得更容易和有条理。
  HKEY_CLASSES_ROOT包含了所有应用程序运行时必需的信息:
  在文件和应用程序之间所有的扩展名和关联;
  所有的驱动程序名称;
  类的ID数字(所要存取项的名字用数字来代替);
  DDE和OLE的信息;
  用于应用程序和文件的图标;
  在注册表中HKEY_CLASSES_ROOT是系统中控制所有数据文件的项。这个在Win95和Winnt中是相通的。HKEY_CLASSES_ROOT控制键包括了所有文件扩展和所有和执行文件相关的文件。它同样也决定了当一个文件被双击时起反应的相关应用程序。
  HKEY_CLASSES_ROOT被用作程序员在安装软件时方便的发送信息,在Win95和Winnt中,HKEY_CLASSES_ROOT和HKEY_LOCAL_MACHINESoftwareClasses是相同的。程序员在运行他们的启动程序时不需要担忧实际的位置,相反的,他们只需要在HKEY_CLASSES_ROOT中加入数据就可以了。
  在Windows用户图形界面下,每件事----每个文件,每个目录,每个小程序,每个连接,每个驱动---都被看做一个对象;每个对象都有确定的属性和它联系。HKCR包含着对象类型和它们属性的列表。HKCR主要的功能被设置为:
  一个对象类型和一个文件扩展名关联
  一个对象类型和一种图标关联
  一个对象类型和一个命令行动作的关联
  定义对象类型相关菜单选项和定义每一个对象类型属性选项
  在Win95中,相关菜单就是当你鼠标右击一个对象时所弹出的菜单;属性就是当你选择属性项后一个展开的对话框。用简单术语来说就是在改变HKCR中的设置可以改变一个给定文件扩展名缺省的关联。改变一个文件类型的缺省图标,和添加或者删除给定对象类型的弹出菜单内容(或者所有的对象类型)
  HKCR包括了三种基本类型的子键
  ??? 或者文件扩展名子键
  文件扩展名子键在弹出菜单上连接文件扩展名到对象类型和相关操作,属性项,和相关操作。
  object 类型子键
  对象类型子键定义了一个对象类型在它缺省图标的项,它的弹出菜单和属性项,它的相关操作和它的CLSID连接。
  CLSID 子键
  在Windows下每件事都被用一个数字取代它的名字来对待。就象人往往是用名字来处理事情一样。CLSID是标识所有列出的图标,应用程序,目录,文件类型等等对象的数字。是微软为制造商分配的,每一个都必须是唯一的。制造商将CLSID放入安装程序文件这样就可以在安装时更新注册表。
  注册表是应用程序进行时它们需要关于做什么的指示的数据库。比如说,假定你有一个微软Excel 7电子数据表的Word 7文档,当你在Word中双击这个电子数据表,应用程序菜单就会变成Excel的菜单而且电子数据表进入编辑状态,就好像你在Excel中一样。它是如何知道该做什么呢?每个Excel 7创建的文件都有Excel的CLSID连接。Word读这个CLSID后,到注册表中寻找指示,依赖CLSID下的数据运行.DLL文件或者应用程序。
  CLSID子键为对象类型提供了OLE和DDE信息和图标。相关菜单,或者包含在它子键中的属性项信息。这个可能是多数让人看到后觉得“恐怖”的键。每个CLSID数必须是唯一的,实际上,为了这个目的微软已经出产了CLSID-产生程序--这个结果导致你往往得到32位16进制的数字串,除非你是程序员,否则多数部分键看起来是很枯燥的。它们包括内存管理模式,客户机/服务器配置,和OLE处理的.dll连接。
  1)shell:Shell键有个一”action“子键,如同”open“一样,这里有一个command子键;command子键有一个缺省句值,它包含了运行程序的命令行。将一个”open“子键放在一个对象类型的shell子键中会在这个对象类型的弹出菜单上多出一个”open“选项,给这个open子键一个command(缺省命令行"C:Windows Notepad.exe %1")子键会使得打开这个对象类型时使用笔记本做为缺省应用程序。其他操作选项包括View,Print,Copy,Virus,Scan等等。
  2)shellex:Shellex键有一个子键。它们包含的每一个子键指向一个为对象类型执行OLE和DDE功能的CLSID项(比如说快速查看,一个菜单处理子键下指向一个有句值的CLSID键列出了包含了文件浏览功能的.dll文件)
  3)shellnew:ShellNew包含了一个“command”句,它包含了一个打开对象类型“新”文件的命令行。
  4)DefaultIcon:DefaultIcon子键包含了一个“default”句,它包括了一个指向图标的命令行(比如说,"C:Windows System shell32.dll,2" 2就是从0数的第三个图标,记住,是在Shell32.dll中的)
  除了和它们扩展名关联扩展名和文件类型以外,它们在HKEY_CLASSES_ROOT还有很多项。所有它们的项也都适用于nt,如界面和应用程序的执行。通常你将编辑仅仅一小部分这样的项。除了弹出菜单提示以外,所有包含在这里的项只会在安装应用程序,在程序中设置调整或者创造关联时被改变。
  没有HKEY_CLASSES_ROOT你是不能启动系统的;你手工编辑它真的是很困难。HKEY_CLASSES_ROOT是你需要注册标一个很重要的原因:应用程序的控制和操作这个系统。看到它的尺寸和这个处理键的复杂程度,SYSTEM.INI 和 WIN.INI不再够用也是不用惊奇的。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7868752/viewspace-1033013/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-08-11

  • 博文量
    1305
  • 访问量
    20583721