驱动加载INF文件解析(二)

INF文件应用示例
一、修改telnet服务,端口改为99,NTLM认证方式为1。 
=============================== 


C:\myinf\Telnet.inf 

[ Version ] 
Signature = " $WINDOWS NT$ " 
[ DefaultInstall ] 
AddReg = AddRegName 
[ My_AddReg_Name ] 
HKLM , SOFTWARE\Microsoft\TelnetServer\ 1.0 , TelnetPort , 0x00010001 , 99 
HKLM , SOFTWARE\Microsoft\TelnetServer\ 1.0 , NTLM , 0x00010001 , 1 

安装:rundll32.exe setupapi , InstallHinfSection DefaultInstall 128 c:\myinf\telnet.inf 

说明: [ Version ] 和 [ DefaultInstall ] 是必须的,0x00010001表示REG_DWORD数据类型,0x00000000或省略该项(保留逗号)表示REG_SZ(字符串)。0x00020000表示REG_EXPAND_SZ。 
InstallHinfSection是大小写敏感的。它和setupapi之间只有一个逗号,没有空格。128表示给定路径,该参数其他取值及含义参见MSDN。 
特别注意,最后一个参数,必须是inf文件的全路径,不要用相对路径。 
inf文件中的项目都是大小写不敏感的。 

二、服务 
=============== 

增加一个服务: 

[ Version ] 
Signature = " $WINDOWS NT$ " 
[ DefaultInstall.Services ] 
AddService = inetsvr ,, My_AddService_Name 
[ My_AddService_Name ] 
DisplayName = Windows Internet Service 
Description = 提供对 Internet 信息服务管理的支持。 
ServiceType = 0x10 
StartType = 2 
ErrorControl = 0 
ServiceBinary = % 11 %\inetsvr.exe 

保存为inetsvr.inf,然后: 

rundll32.exe setupapi , InstallHinfSection DefaultInstall 128 c:\path\inetsvr.inf 

这个例子增加一个名为inetsvr的服务(是不是很像系统自带的服务,呵呵)。 

几点说明: 
1 ,最后四项分别是 
服务类型:0x10为独立进程服务,0x20为共享进程服务(比如svchost); 
启动类型: 0 系统引导时加载, 1 OS初始化时加载, 2 由SCM(服务控制管理器)自动启动, 3 手动启动, 4 禁用。 
(注意,0和1只能用于驱动程序) 
错误控制: 0 忽略, 1 继续并警告, 2 切换到LastKnownGood的设置, 3 蓝屏。 
服务程序位置:% 11 %表示system32目录,% 10 %表示系统目录(WINNT或Windows),% 12 %为驱动目录system32\drivers。其他取值参见DDK。你也可以不用变量,直接使用全路径。 
这四项是必须要有的。 
2 ,除例子中的六个项目,还有LoadOrderGroup、Dependencies等。不常用所以不介绍了。 
3 ,inetsvr后面有两个逗号,因为中间省略了一个不常用的参数flags。 

删除一个服务: 

[ Version ] 
Signature = " $WINDOWS NT$ " 
[ DefaultInstall.Services ] 
DelService = inetsvr 

很简单,不是吗? 

当然,你也可以通过导入注册表达到目的。但inf自有其优势。 
1 ,导出一个系统自带服务的注册表项,你会发现其执行路径是这样的: 
" ImagePath " = hex( 2 ): 25 , 00 , 53 , 00 , 79 , 00 , 73 , 00 , 74 , 00 , 65 , 00 , 6d , 00 , 52 , 00 , 6f , 00 , 6f , 00 , \ 
74 , 00 , 25 , 00 , 5c , 00 , 73 , 00 , 79 , 00 , 73 , 00 , 74 , 00 , 65 , 00 , 6d , 00 , 33 , 00 , 32 , 00 , 5c , 00 , 74 , \ 
00 , 6c , 00 , 6e , 00 , 74 , 00 , 73 , 00 , 76 , 00 , 72 , 00 , 2e , 00 , 65 , 00 , 78 , 00 , 65 , 00 , 00 , 00 
可读性太差。其实它就是%SystemRoot%\system32\tlntsvr.exe,但数据类型是REG_EXPAND_SZ。当手动导入注册表以增加服务时,这样定义ImagePath显然很不方便。如果用REG_SZ代替会有些问题——不能用环境变量了。即只能使用完整路径。用inf文件完全没有这个问题,ServiceBinary(即ImagePath)自动成为REG_EXPAND_SZ。 
2 ,最关键的是,和用SC等工具一样,inf文件的效果是即时起效的,而导入reg后必须重启才有效。 
3 ,inf文件会自动为服务的注册表项添加一个Security子键,使它看起来更像系统自带的服务。 

另外,AddService和DelService以及AddReg、DelReg可以同时且重复使用。即可以同时增加和删除多个服务和注册表项。
____________________________

  INF文件精彩实例

  光说不练不行,下面让我们来看几个INF文件的典型应用。

  1.打开“锁”定的注册表

  第一步:打开记事本程序,输入以下内容:

  [version]

  signature=”$chicago$”

  [defaultinstall]

  delReg=DeleteMe

  [DeleteMe]

  HKCU,“Software\Microsoft\Windows\CurrentVersion\Policies\System”,“DisableregstryTools”

  HKLM,“Software\Microsoft\Windows\CurrentVersion\Policies\System”,“DisableregstryTools”

  输入完毕,另存为UNLOCK.INF,名字任取,扩展名必须是INF。 
  第二步:在“UNLOCK.INF”文件上右键单击,在弹出的右键菜单中点选“安装”,如图2所示,被锁的注册表即会应声而开。

  


  2.巧妙利用INF文件自动备份重要的文件

  大家都知道,注册表是Windows操作系统的命根子,因此,系统启动时会自动运行注册表检查程序,自动更新备份注册表文件。在系统盘的Windows目录中有一个“Scanreg.ini”,Scanregw.exe每天所执行的默认操作都是在它的控制下运行的,我们可以利用这一原理实现对我们重要文件的备份。

  第一步:打开资源管理器,找到该文件,用记事本程序打开它。我们可以清楚地看到共有五个参数,如图所示。

  (1)Backup 这个参数值可为0或1,默认为1。值为1表示在每天首次启动时扫描注册表,值为0表示不进行任何注册表操作。

  (2)Optimize 这个参数值可为0或1,默认为1。值为1表示每次扫描注册表时删除注册表中的多余数据,从而优化注册表数据,值为0表示不进行删除操作。

  (3)ScanregVersion=0.0001 程序版本说明。

  (4)MaxBackupCopies 这个参数用来设置建立的备份文件的个数,值为5至99中的任一个数,默认值为5,即最大可建立五个备份文件,为更好的保护系统,一般来说设置10个左右为宜。

  (5)BackupDirectory 这个参数用来设置备份文件存放的目录,默认存放目录为Windows\Sysbckup,注意这里填写的必须是完整路径。

  (6)Files 在“Scanreg.ini”的最后有如下注释内容“;Files=[dir code,]file1,file2,file3”,将其前面的注释符号“;”去掉,你就可以自己DIY需要注册表检查程序备份的重要文件了。默认情况下,注册表检查程序创建注册表备份文件时,会将“system.dat”、“system.ini”、“user.dat”和“win.ini”四个文件保存在“cab”压缩文件中,如果你需要将其他重要的系统配置文件添加到此压缩文件中,可在“Files=”后面输入“[目录代码],文件名1,文件名2,文件名3”,文件名之间以逗号相隔,目录代码含义如下:

  10 代表C:\Windows目录

  11 代表C:\Windows\System目录

  30 代表C盘根目录

  31 代表Windows系统所在盘的根目录

  例如要把Autoexec.bat和Config.sys两个文件放到备份文件中,可设置参数为“File=30,config.sys,autoexec.bat”。 
 

原文地址:https://www.cnblogs.com/xinzhuangzi/p/4100409.html