登录 |

教你使用Reg文件玩转注册表

2008年04月22日 上午 12:01 | 作者:pcpacer

有的时候为了方便修改注册表,我们会制作一些脚本,但是不管是inf文件还是vbs脚本,我觉得还是只有.reg文件是最方便的。
关于注册表的操作,常见的是创建、修改、删除。
一、创建
创建分为两种,一种是创建子项(Subkey)
注:如果你对注册表的命名不是很清楚,可以看看注册表命名标准手册
(http://www.sometips.com/tips/registryhack/29.htm)
我们创建一个文件,内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Test4Adam]
然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE\SOFTWARE\下创建了一个名字为“Test4Adam”的子项。
另一种是创建一个项目名称
那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Test4Adam]
“Test1″=”Adam”
“Test2″=hex:61
“Test3″=dword:00000064
Test1的类型是“String value”
Test2的类型是“Binary value”
Test3的类型是“DWORD value”
注意:如果你的注册表中不存在Test4Adam这个子项,那么该脚本会为你创建该子项。
二、修改
修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入即可,在此我就不再赘述。
三、删除
我们首先来说说删除一个项目名称,我们创建一个如下的文件:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Test4Adam]
“Test1″=-
执行该脚本,HKEY_LOCAL_MACHINE\SOFTWARE\Test4Adam下的”Test1″就被删除了;
我们再看看删除一个子项,我们创建一个如下的脚本:
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Test4Adam]
执行该脚本,HKEY_LOCAL_MACHINE\SOFTWARE\Test4Adam就已经被删除了。相信看到这里,.reg文件你基本已经掌握了。

二、注册表应用
12、DOS下维护注册表的高级技巧
现在随着电脑应用知识的普及,我想,很多朋友对WINDOWS注册表的修改已经有不少经验和心得。在图形界面下对注册表的维护和修改,就不必再提了,但有时候,我们可能会遇到更辣手的事情,如由于人为错误操作或者恶性病毒感染而使系统切底崩溃,不能进入WINDOWS图形界面时,我们对此是否只有重装这种方法呢?本文将就在DOS下面尽量挽救系统这方面作出阐述。
一、 使用scanreg/restore
  我想这种方法大家也比较熟悉了,只要在DOS界面下输入该命令,就可以在最近的5个注册表备份里恢复,如果幸运的话,系统就可以马上恢复。但,事实上,用这种方法有个致命的缺陷就是你只有最近5天的注册表备份可以选择。因为控制着自动备份的scanreg.exe只会在每天第一次启动电脑时备份,如果哪天你安装的程序或者对注册表的修改比较多,那么你的努力就大多白费了。这种方法就正如是眉毛胡子一起抓,正确和错误的都一起改掉,是否能为恢复系统帮上忙,总有一种听天由命的感觉。所以,笔者鼓励大家使用第二种方法。
   二、使用DOS界面的regedit.exe
  如果把scanreg/restore比作是一刀切的话,这种方法更像是一次高明的外科手术,只一矢中的地针对病,把错误修复而完全不影响注册表的其他健康部分。这样,我们就能在最大限度上保留我们的工作成果了。使用regedit.exe对注册表实行局部修改的思路是:首先,把注册表里有嫌疑的分支导出;然后,使用edit对它进行分析和修改;最后,把健康的分支重新导入注册表里。好了,我们来看看整个过程的具体操作。
   1 导出注册表分支
  在DOS下导出注册表分支的命令格式是:Regedit[/L:system]
[/R:user] /E filename [regpath1]。/L:system是指定system.dat的路径,/R:user是指定user.dat的路径,如果不说明,系统就会在默认的路径下找;/E:是导出注册表分支的文件名,regpath1是要导出的注册表分支。比如,我们要导出默认注册表关于控制系统启动的分支到test.reg里,命令如下:regedit /e test.reg HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\Current
Version\Run。
   2 对注册表进行分析、修改
  在DOS下面只要运行edit就能对*.reg文件进行编辑了,因为我们导出的注册表实际上就是文本文件。不过,要正确找出引起错误的地方并修改,需要我们平时对注册表积累的经验。下面,我们看一下它的基本结构,以使我们在对它的修改时可以有的放矢。我们知道,注册表里面有6个主分支,其中容易引起致命错误而使WINDOWS不能正常启动的分支有: [HKEY_LOCAL_MACHINE],记录着本地机器的硬件配置以及安装的相应软件,特别是[HKEY-LOCAL-MACHINE\Enum\PCI]这个分支下面的主键值,一旦出错,WINDOWS往往不能启动。如[HKEY-LOCAL-MACHINE\Enum\PCI
\VEN_8086&DEV-7111&SUBSYS_00000000&REV-01\BUS_00&DEV_07&FUNC-01]记录的是硬盘控制器的详细信息,下面的Logconfig记录着它的各种参数;[HKEY_LOCAL-MACHINE\Enum
\PCI\VEN-1002&DEV-4C42&SUBSYS_4C421071&REV-DC000800]记录的则是显示卡的重要资料和参数,一旦这里出错,往往会导致WINDOWS在启动时黑屏,然后死掉。
  另外还有[HKEY-LOCAL-MACHINE\Software\Microsoft
\Windows\CurrentVersion]里记录着WINDOWS当前版本的信息以及启动时执行的程序等,这是病毒最爱攻击和修改的地方。
  至于还有[HKEY-CLASS-ROOT]是记录文件种类及其关联信息的,[HKEY-CURRENT-USER]里记录着当前用户的各种信息,包括登陆的密码和各方面的设置等,这些一般不会引起WINDOWS的致命错误,这里也不再详细分析了。
  当我们对这些键值分析和修改时,如果碰到什么不清处的地方,可以通过第1点的导出注册表方法,把一些备份注册表的相应分支导出,进行比较。WINDOWS的注册表备份都放在C:\windows\sysbackup里面,如我们要导出第一个注册表备份的[HKEY_LOCAL_MACHINE]分支,那么我们可以先进入该目录,然后键入命令:extract /e rb000.cab *.*,先把system.dat和user.dat解压出来,再键入命令:regedit /L:system.dat /R:user.dat /e backup.reg HKEY-LOCAL-MACHINE。 笔者在这里提醒一下,这是一个很好的解决问题的方法,再用上一些文件比较软件可以很快的找出错误的,请诸位慢慢体会。
   3 把修改好的注册表分支重新导入
  命令的格式为:regedit /L:system /R:user file1.reg file2.reg。我们一般都要修改默认的注册表文件,所以在实际使用中只需键入:regedit file1.reg就行了。   
   好了,讲了这么久,我们看看一个具体的案例。
  学院机房里的一台机器在重新启动后,无论用正常模式或者安全模式都不能进入WINDOWS界面,表现为启动过程中硬盘突然不读。用SCANDISK检查过硬盘,并没有发现问题。在启动过程中选择生成BOOTLOG.TXT文件,发现启动到硬盘控制器后就断掉了。本来想用scanreg/restore恢复备份的注册表,可是该机器为了加快启动,并没有自动备份。于是,用regedit把[HKEY-LOCAL-MACHINE\Enum\PCI]分支导出,键入:regedit /e hdc.reg HKEY-LOCAL-MACHINE\Enum\PCI;接着用EDIT查看关于硬盘控制器的部分,发现有”ChannelOptions”=hex:00,问题到这里终于发现了,原来是有人把IDE控制器设置成不使用,造成在加载硬盘控制器后,系统不能访问硬盘,所以把它改为:hex:02;再键入命令:regedit hdc.reg,把修改后的信息导入。重新启动机器,一切正常运行了。
  这样,在不损坏任何数据的情况下,就把问题解决了。希望这个例子能给大家带来这种DOS下维护注册表技巧的启发,毕竟,我们硬盘上面有很多都是无价的数据。

网卡MAC地址修改方法集锦

2008年04月20日 下午 11:08 | 作者:pcpacer

一、简单的修改方法

  其实不论 98 还是 2000 ,自身都已经提供了更改网卡地址的功能,只是平时大家都没上这方面想,因此没有注意到而以,很简单的哦 …..

  现在我们先来看看 WIN2000 。在桌面上的网上邻居图标上单击右键,选择“属性”,在弹出的“网络和拨号连接”窗口中一般有两个图标,一个是“新建连接”图标,一个是“我的连接”图标。当然了,如果你的机器上有两个网卡的话,那就有三个图标了。现在假设你只有一个网卡,那就在“我的连接”图标上单击右键,选择“属性”,这时会弹出一个“我的连接属性”的窗口。在窗口下面有一个“配置”按钮,点击该按钮后就进入了网卡的属性对话框了,这个对话框中有五个属性页,点击第二项“高级”页,在“属性”标识下有两项或多项,现在你应该能看到一个叫“ Network Address ”的属性项了吧,点击该项,在对话框右边的“值”标识下有两个单选项,默认是“不存在” ,现在你只要选中上面一个单选项,然后在右边的框中输入你想改的网卡 MAC 地址(注意要连续输入,不要带“-”),如“ 00E0404000A0 ”,点“确定”, OK !你已经大功告成了!

  在 98 下面的修改和 WIN2000 下差不多。在“网上邻居”图标上单击右键,选择“属性”,弹出一个“网络”对话框,在“配置”框中,双击你要修改的网卡,出来一个网卡属性对话框。在“高级”选项中,也是点击“属性”标识下的“ Network Address ”项,在右边的两个单选项中选择上面一个,再在框中输入你要修改的网卡 MAC 地址,点“确定”后,系统会提示你重新启动。接下来就不用我说了吧!:)(重启后你可以用“ winipcfg ”看看修改的结果)

  如果你想把网卡的 MAC 地址恢复原样,只要选择“ Network Address ”项右边的“没有显示”再重新启动即可。在 WIN2000 下面是选择“不存在”,当然也不用重新启动了。

   二、注册表修改的方法

  由于驱动或网卡的关系,有的机器中没有“ Network Address ”项,那我们只有通过修改注册表来进行修改了。

  ◆ Windows2000 的修改

  1 、在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000 、 0001 、 0002 等主键下,查找 DriverDesc ,内容为你要修改的网卡的描述,如“ Realtek RTL8029(AS)-based PCI Ethernet Adapter ”。

  2 、在其下,添加一个字符串,命名为 NetworkAddress ,其值设为你要的 MAC 地址(注意地址还是连续写)。如: 00E0DDE0E0E0 。

  3 、然后到其下 Ndi\params 中添加一项名为 NetworkAddress 的主键,在该主键下添加名为 default 的字符串,其值是你要设的 MAC 地址,要连续写,如: 000000000000 。(实际上这只是设置在后面提到的高级属性中的“初始值”,实际使用的 MAC 地址还是取决于在第 2 点中提到的 NetworkAddress 参数,这个参数一旦设置后,以后高级属性中的值就是 NetworkAddress 给出的值而非 default 给出的了。)

  4 、在 NetworkAddress 的主键下继续添加名为 ParamDesc 的字符串,其作用为指定 NetworkAddress 主键的描述,其值可自己命名,如“ Network Address ”,这样在网卡的高级属性中就会出现 Network Address 选项,就是你刚在注册表中加的新项 NetworkAddress ,以后只要在此修改 MAC 地址就可以了。继续添加名为 Optional 的字符串,其值设为“ 1 ”,则以后当你在网卡的高级属性中选择 Network Address 项时,右边会出现“不存在”选项。

  5 、重新启动你的计算机,打开网络邻居的属性,双击相应网卡项会发现有一个 Network Address 的高级设置项,可以用来直接修改 MAC 地址或恢复原来的地址。

  ◆ Win9x 的修改

  1 、在 HKEY_LOCAL_MACHINE\system\Currentcontrolset\services\class\net\0000 、 0001 、 0002 等下,找到 DriverDesc 字符串。

  2 、在其下,添加一个字符串,名字为 NetworkAddress ,其值设为你要的 MAC 地址,注意要连续写。如: 00E0DDE0E0E0 。

  3 、然后到其下 Ndi\params 中添加一项名为 NetworkAddress 的主键,在该主键下添加名为 default 的字符串,其值写你要设的 MAC 地址,注意要连续的写,如 00E0DDE0E0E0 。   

  4 、继续添加名为 ParamDesc 的字符串,其作用为指定 NettworkAddress 主键的描述,其值可自己命名,如“ Network Address ”,这样以后打开网络邻居的属性,这样在网卡的高级属性中就会出现 Network Address 选项,就是你刚在注册表中加的新项 NetworkAddress ,以后只要在此修改 MAC 地址就可以了。

  继续添加名为 Optional 的字符串,其值设为“ 1 ”,则以后当你在网卡的高级属性中选择 Network Address 项时,右边会出现“没有显示”选项。

  ◆ WinNT 下改网卡地址的方法:

  1 、打开注册表,定位到 HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->Services

  2 、找到网卡的键值,在 Parameters 项里添加字串值 NetworkAddress ,其值设为你要修改的 MAC 地址,如:“ 00E0DDE0E0E0 ”。

二、 Linux下的MAC地址更改 

1.首先必须关闭网卡设备,否则会报告系统忙,无法更改。命令是:“/sbin/ifconfig eth0 down”    

2.修改MAC地址,这一步较Windows中的修改要简单。

命令是:“/sbin/ifconfig eth0 hw ether 00AABBCCDDEE” 

3.重新启用网卡“/sbin/ifconfig eth0 up”网卡的MAC地址更改就完成了。

教你boot.ini文件的使用方法

2008年04月20日 下午 11:04 | 作者:pcpacer

boot.ini 文件是个启动引导程序文件,装多系统或者重装系统的时候会用到它
1.打开

默认的情况下这个文件是隐藏的,准确路径是c:\boot.ini,可以用记事本打开这个路径,也可以在“运行”中输入“c:\boot.ini”启动该文件。
常用的方法是去掉隐藏后用记事本打开,“资源管理器”→“工具”→“文件夹选项”→“查看”去掉“隐藏……”前面的√,“隐藏文件和文件夹”选“显示……”这样就去掉了隐藏,可以在c:\看到boot.ini文件了。

2.修改

[boot loader]
timeout=0
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”Windows Server 2003, Enterprise” /nodetect /noguiboot
这是我的win2003的boot.ini文件,我就以我的这个来作示范

timeout=0延迟时间设置

延迟时间是系统启动引导菜单后在设定的延迟时间内用户没有进行任何操作时,进入默认的操作系统。

默认设置是30,如果你只有一个系统的话就设置为0,多系统的话就根据自己的情况设置一个时间。

default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS默认系统

默认系统就是延迟时间到了后自动进入的系统

我们经常修改的是partition(1)\WINDOWS这一块

partition(1)所指的就是第1个分区,通常也就是c:盘,WINDOWS就是你的系统文件夹。

如果你要默认的操作系统是d:盘的XP,那么这一块的内容就是partition(2)\WINDOWS

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”Windows Server 2003, Enterprise” /nodetect /noguiboot系统列表

在这个位置列上你的所有操作系统(一行一个系统)

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS这一块和上面“默认系统”的修改方法一样

=”"”"中间的内容就是开机显示列表时本系统的名称,可以任意修改,而且还支持中文!

/nodetect /noguiboot这部分是启动参数,在”后面加一个半角空格/参数,可以加多个。下面是各项参数的详细解释。

  /fastdetect:快速检测,很多网站都推荐修改为/nodetect

  /SAFEBOOT:安全启动,只启动HKLM\System\CurrentControlSetControl\SafeBoot中的驱动程序和服务,其后可跟三个参数Minimal、Network或Dsrepair。Minimal和Network允许在网络连接下启动系统。而Dsrepair要求系统从备份设备中调入活动目录的设置。还有一个选项是Minimal(AlternateShell),它让系统调入由HKLM\System\CurrentControlSetSafeBoot\AlternateShell指定的SHELL程序,而不使用默认的Explorer。

  /NOGUIBOOT:不加载VGA驱动程序,也就不会显示启动过程和失败时的蓝屏信息。

  /BOOTLOG:将日志写入Nnbtlog.txt文件。

  /BASEVIDEO:使用标准VGA方式启动,这种方式主要用于显示驱动程序失效时。

  /SOS:在调入驱动程序名时显示它的名称,因驱动问题而无法启动时使用比较好。

上面说的都是直接修改的方法,其实还可以用其他方法修改,
1.“系统属性”(在我的电脑上点右键→属性)→高级→“启动和故障恢复”设置。
2.运行→“msconfig”→boot.ini
boot.ini文件的修改方法就这么多,基本也够用了,你会了吗?

精简100M以上-重新打造你的XP/2003安装光盘!

2008年04月20日 下午 11:02 | 作者:pcpacer

随着MS操作系统的一次又一次升级,你除了要随时升级你的硬件以跟上它们的步伐,还有更多烦恼的事情。比如,基于WINDOWS NT系列的操作系统(XP/SRV2003),它们比较令我感到烦恼的是,它们的光盘容量越来越大(想想WINDOWS3.1的大小吧?呵呵),安装时间也越来越长——开始安装——》复制文件——》重新启动——》又准备复制文件——》重新启动和复制更多的文件……,这些烦琐的步骤自nt4.0以来就一直存在,不管是win2000还是XP,或者WINDOWS 2003。

现在,我就和大家分享一个秘密,就是:如何减少操作系统安装时这这些复制文件的时间以及安装光盘的容量。

比如,我们以常用的WINDOWS XP PRO为例,原版的光盘大小都在500M以上,其中光i386目录就占了约497M,其实,这里面有很多文件是你和我都不需要使用的,譬如那些语言代码页、GUI模式的代码、为卸载而备份的旧文件、升级所需的文件等等

(有多少人在安装XP的时候是升级安装呢?估计85%以上都是全新安装的吧?) 

既然大家多数情况下都是全新安装,那么我们为什么不把那些不需要的文件给删除呢?呵呵,现在详细介绍打造的方法:

首先, 把你的Windows XP 安装光盘放入光驱(或者把它复制到硬盘的某个目录)。 
然后在“运行”里键入x:\i386\winnt32.exe /noreboot 。
其中x :为你的Windows XP 安装光盘所在的光驱

接着,安装程序会提示你现在选择“全新安装”还是“升级安装”
记住:一定要选”全新安装“,并且在接下去的 ”安装选项” 屏幕中,在 ”进一步的选项” 上按,并 在 ”我想复制所有CD上的安装文件” 已经打上勾。 

在安装程序完成之后,它并不会像以前一样重启你的电脑进行安装(因为你之前选择了/noreboot的参数) ,呵呵!
这时,在你的电脑的C盘根目录就会有会有 2个文件夹:
C:\$ WIN_NT$.~ LS
C:\$ WIN_NT$.~ BT

这2个文件夹是预先设定为隐藏属性的,因此如果你找不到,可以在文件夹选项中的查看选择”显示所有的隐藏文件和文件夹”

好了,接着我们做些准备工作

把C:\$ WIN_NT$.~ LS- 重新命名为INSTALL
C:\$ WIN_NT$.~ BT- 重新命名为BOOT
并且把BOOT文件夹复制到INTALL目录中。

然后在INSTALL目录中,删除 size.sif 文件(它是之前安装程序检测你的电脑的磁盘空间所生成的)
在BOOT目录中,删除 winnt.sif、migrate.inf和BOOTSECT.DAT。

(当然,如果你想全自动安装,那你可以把你自己的winnt.sif复制到BOOT目录,如果想XP默认的那样全手动安装,就要删掉它)

接着,在把bootfix.bin复制到BOOT目录,这样,以后生成的光盘就会出现“press any key to boot from cd”

接着最重要的一步:使用ultra EDIT 等二进制编辑工具
修改boot\setupldr.bin ,把所有的i386替换为BOOT(正确的话应该是4个地方)
最后,,在 把的Windows XP 光盘根目录下的 win51 , win51IP
复制到install目录。
(如果是家庭版,则是win51 , win51IC)
(如果是集成了SP1的版本,则还要加上win51ip.sp1 和spnotes.htm )

当然,我们还需要XP的光盘引导文件:
http://home.online.no/~msols/xpboot.bin
把它下载保存到在c:\install 目录里,再用ultra EDIT 等二进制编辑工具修改,把i386替换成BOOT:
类似:
…h…G……….F…..F………….r..a..v…….]…..$………………SETUPLDR.BINBOOTFIX.BINI386……………………………………
其中的I386替换成BOOT:
…h…G……….F…..F………….r..a..v…….]…..$………………SETUPLDR.BINBOOTFIX.BINBOOT……………………………………

好了。最后的 c:\install 应该看起来像这一样:

Directory of c:\install

10/19/2003 06:58 PM <DIR> .
10/19/2003 06:58 PM <DIR> ..
10/19/2003 06:58 PM <DIR> I386
10/19/2003 06:58 PM 2048 XPBOOT.BIN
09/05/2001 20:00 AM 10 WIN51
09/05/2001 20:00 AM 10 WIN51IP
10/08/2003 06:58 PM <DIR> BOOT

最后运行cdimage生成ISO:
cdimage -lXPCN -t09/05/2001,20:00:00 -bc:\install\xpboot.bin -h -n -m -o c:\install e:\iso\xpcn.iso

哈哈,检查一下该ISO的大小,你们猜有多大?
看图吧?才430M,呵呵不仅光盘小了(甚至可以把win2000加进去哦!),而且安装速度也快了^_^,或许当你还在复制文件的时候,我就已经进入GUI模式了……

最后我反复强调的是:这类光盘只支持全新安装,不支持升级安装 
(只是,有多少人是升级安装的呢?)

恼人的Windows蓝屏故障,你知道代码的含义吗?

2008年04月18日 下午 05:11 | 作者:pcpacer

111 0×006F档名太长。 

112 0×0070磁碟空间不足。 

113 0×0071没有可用的内部档案识别字。 

114 0×0072目标内部档案识别字不正确。 

117 0×0075由应用程式所执行的IOCTL呼叫 不正确。 

118 0×0076写入验证叁数值不正确。 

119 0×0077系统不支援所要求的指令。 

120 0×0078此项功能仅在Win32模式有效。 

121 0×0079 semaphore超过逾时期间。 

122 0×007A传到系统呼叫的资料区域 太小。 

123 0×007B档名、目录名称或储存体标签语法错误。 

124 0×007C系统呼叫层次不正确。 

125 0×007D磁碟没有设定标签。 

126 0×007E找不到指定的模组。 

127 0×007F找不到指定的程序。 

128 0×0080没有子行程可供等待。 

129 0×0081 %1这个应用程式无法在Win32模式下执行。 

130 0×0082 Attempt to use a file handle to an open disk partition for an operation other than raw disk I/O.