概述
INF文件应用示例
一、修改telnet服务,端口改为99,NTLM认证方式为1。
===============================
C:myinfTelnet.inf
[ Version ]
Signature = " $WINDOWS NT$ "
[ DefaultInstall ]
AddReg = AddRegName
[ My_AddReg_Name ]
HKLM , SOFTWAREMicrosoftTelnetServer 1.0 , TelnetPort , 0x00010001 , 99
HKLM , SOFTWAREMicrosoftTelnetServer 1.0 , NTLM , 0x00010001 , 1
安装:rundll32.exe setupapi , InstallHinfSection DefaultInstall 128 c:myinftelnet.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:pathinetsvr.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 %为驱动目录system32drivers。其他取值参见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%system32tlntsvr.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,“SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem”,“DisableregstryTools”
HKLM,“SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem”,“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 这个参数用来设置备份文件存放的目录,默认存放目录为WindowsSysbckup,注意这里填写的必须是完整路径。
(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:WindowsSystem目录
30 代表C盘根目录
31 代表Windows系统所在盘的根目录
例如要把Autoexec.bat和Config.sys两个文件放到备份文件中,可设置参数为“File=30,config.sys,autoexec.bat”。
最后
以上就是笨笨中心为你收集整理的驱动加载INF文件解析(二)的全部内容,希望文章能够帮你解决驱动加载INF文件解析(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复