📄 inf文件格式小结 - dooit - 博客园.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0054)http://ttyp.cnblogs.com/archive/2005/07/21/197074.html -->
<HTML><HEAD id=Head><TITLE>INF文件格式小结 - DooIT - 博客园</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META id=metaKeywords content=INF文件格式小结 name=keywords>
<META
content=INF是DeviceINFormationFile的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。
name=description><LINK id=CommondCss
href="INF文件格式小结 - DooIT - 博客园.files/common.css" type=text/css
rel=stylesheet><LINK id=MainCss href="INF文件格式小结 - DooIT - 博客园.files/style.css"
type=text/css rel=stylesheet><LINK id=SecondaryCss
href="INF文件格式小结 - DooIT - 博客园.files/customcss.css" type=text/css
rel=stylesheet><LINK id=RSSLink title=RSS href="http://www.cnblogs.com/ttyp/rss"
type=application/rss+xml rel=alternate>
<SCRIPT src="INF文件格式小结 - DooIT - 博客园.files/common.js"
type=text/javascript></SCRIPT>
<META content="MSHTML 6.00.2900.3395" name=GENERATOR></HEAD>
<BODY>
<FORM id=Form1 name=Form1 onsubmit="javascript:return WebForm_OnSubmit();"
action=197074.html method=post>
<DIV><INPUT id=__EVENTTARGET type=hidden name=__EVENTTARGET> <INPUT
id=__EVENTARGUMENT type=hidden name=__EVENTARGUMENT> <INPUT
id=" __VIEWSTATE" type=hidden name=__VIEWSTATE> </DIV>
<SCRIPT type=text/javascript>
//<![CDATA[
var theForm = document.forms['Form1'];
if (!theForm) {
theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</SCRIPT>
<SCRIPT src="INF文件格式小结 - DooIT - 博客园.files/WebResource.axd"
type=text/javascript></SCRIPT>
<SCRIPT language=JavaScript>
function ctlent(evt,id)
{
if(evt.ctrlKey && evt.keyCode == 13)
{
try
{
TempSave(id);
}
catch(ex)
{
}
finally
{
__doPostBack('AjaxHolder$PostComment$btnSubmit','')
}
}
}</SCRIPT>
<SCRIPT language=JavaScript>function SetReplyAuhor(author){document.getElementById('AjaxHolder_PostComment_tbComment').value+="@"+author+"\n";document.getElementById('AjaxHolder_PostComment_tbComment').focus();return false}</SCRIPT>
<SCRIPT src="INF文件格式小结 - DooIT - 博客园.files/ScriptResource.axd"
type=text/javascript></SCRIPT>
<SCRIPT
src="D:\Backup\我的文档\新建文件夹\INF文件格式小结 - DooIT - 博客园.files\ScriptResource(1).axd"
type=text/javascript></SCRIPT>
<SCRIPT
src="D:\Backup\我的文档\新建文件夹\INF文件格式小结 - DooIT - 博客园.files\ScriptResource(2).axd"
type=text/javascript></SCRIPT>
<SCRIPT src="INF文件格式小结 - DooIT - 博客园.files/js" type=text/javascript></SCRIPT>
<SCRIPT type=text/javascript>
//<![CDATA[
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
return true;
}
//]]>
</SCRIPT>
<DIV id=top>
<DIV>
<TABLE>
<TBODY>
<TR>
<TD class=HeaderTitles>
<H1 class=HeaderTitle><A class=HeaderMainTitle id=Header1_HeaderTitle
href="http://www.cnblogs.com/ttyp/">DooIT</A></H1>
<P id=tagline></P></TD></TR></TBODY></TABLE></DIV>
<DIV class=HeaderBar>
<TABLE class=HeaderBar id=HeaderBar cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD class=HeaderBarTab noWrap> <A id=Header1_MyLinks1_HomeLink
href="http://www.cnblogs.com/">博客园</A> :: <A
id=Header1_MyLinks1_MyHomeLink
href="http://www.cnblogs.com/ttyp/">首页</A> :: <A
id=Header1_MyLinks1_NewPostLink
href="http://www.cnblogs.com/ttyp/admin/EditPosts.aspx?opt=1">新随笔</A> ::
<A id=Header1_MyLinks1_ContactLink accessKey=9
href="http://www.cnblogs.com/ttyp/contact.aspx?id=1">联系</A> :: <A
id=Header1_MyLinks1_Syndication
href="http://www.cnblogs.com/ttyp/rss">订阅</A> <A class=XMLLink
id=Header1_MyLinks1_XMLLink href="http://www.cnblogs.com/ttyp/rss"><IMG
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px"
alt=订阅 src="INF文件格式小结 - DooIT - 博客园.files/xml.gif"></A> :: <A
id=Header1_MyLinks1_Admin
href="http://www.cnblogs.com/ttyp/admin/EditPosts.aspx">管理</A> :: </TD>
<TD><IMG id=Header1_BlueTab
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px"
src="INF文件格式小结 - DooIT - 博客园.files/BlueTabRight.gif" align=absMiddle></TD>
<TD class=HeaderBarTabBack noWrap width="100%">
<DIV class=BlogStatsBar>
<TABLE class=BlogStatsBar>
<TBODY>
<TR>
<TD width="100%"></TD>
<TD class=BlogStatsBar noWrap> 47 随笔 :: 16 文章 :: 1364 评论
:: 25 Trackbacks
</TD></TR></TBODY></TABLE></DIV></TD></TR></TBODY></TABLE></DIV></DIV>
<DIV id=leftmenu></DIV>
<DIV id=main>
<SCRIPT type=text/javascript>
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]>
</SCRIPT>
<DIV class=post>
<DIV class=postTitle><A id=AjaxHolder_ctl01_TitleUrl
href="http://www.cnblogs.com/ttyp/archive/2005/07/21/197074.html">INF文件格式小结</A>
</DIV>
<DIV class=postText>
<DIV twffan="done">INF是Device INFormation
File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><STRONG>INFI的功能</STRONG></DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done">1 复制文件、删除文件、或重新命名文件。<BR>2 新增或删除注册表(Registry)中的项目。<BR>3
修改重要的系统设置文件(如 Autoexec.bat、Config.sys、.INI 等)</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><STRONG>INF的规则</STRONG></DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done">INF是纯文本文件,它是分节的,这点和INI文件类似,每节以"[]"扩起来,每一个节名最长为255个字符(Windows
2000/XP/2003操作系统中)或28个字符(Windows
98操作系统中)。在节与节之间的内容叫条目,每一个节又是由许多的条目组成的,每一个条目都由=分开,如a="b"。如果每一个条目的等号后有多个值,则每一个值之间用","号分隔开。INF对大小写不敏感,行注释语句命令是";",类似VB里的'。如果一行写不下,使用"\"来换行。</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><STRONG>INF的运行</STRONG></DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done">.INF文件是由Windows的SetupAPI解释执行的脚本文件,它的运行过程很简单,是一种线性的执行,线性的意思就是.INF文件的运行过程不存在分支语句,也就是没有条件语句,一旦开始执行,就是沿着固定的路线运行。它的运行是按照节为单位来执行的,从某一个[Install]节开始执行,从上到下执行该节中的条目,如果该条目是一个节,那么就一条条执行子节中的条目,如此递归执行。在WINDOW上运行只要右击这个文件,点击安装即可。</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><BR><STRONG style="FONT-SIZE: 12pt">INF的语法结构</STRONG></DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><SPAN
style="COLOR: #0000ff">;指定版本和签名节<BR></SPAN>[VERSION]<BR>;系统根据Signuture看是不是适合当前版本,如果适合的话就执行,否则不执行,当然强制安装是可以的<BR>;用于WIN9X<BR>Signature="$CHICAGO$"<BR>;WINNT+<BR>;Signature="$Windows
NT$"</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done">;指定安装文件布局<BR>该行是可选的,如果没有提供布局信息文件,则在INF文件内必须包含[SourceDisksNames]和[SourceDisksFiles]节<BR>LayoutFile=filename.inf</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done">[SourceDisksNames]节
<BR>[SourceDisksNames]节罗列源文件所在盘符序列码、盘描述符、盘卷标号和盘序列号。
<BR>[SourceDisksNames]节内语句的语法为:
<BR>disk-ordinal=“disk-description”,disk-label,disk-serial-number
<BR>其中disk-ordinal为必选项,是盘符序列码,标识一个源盘,具有惟一性,一般可设置为从1开始递增的整数,0不是一个有效的盘符序列码。当存在多个源盘时,盘符序列码之间不能重复。
<BR>disk-description为必选项,是盘描述符,用双引号括起的字符串或字符串宏描述盘的内容或目的。安装引擎将该字符串显示在对话框内以提示用户。
<BR>disk-label为源盘的卷标识。 <BR>disk-serial-number未使用,但必须被设置为0。
<BR>[SourceDisksFiles]节 <BR>[SourceDisksFiles]节指定安装时使用的源文件和盘符序列码、盘描述符。
[SourceDisksFiles]节内语句的语法为: <BR>file-name=disk-number[,subdir] [,file-size]
<BR>其中file-name为必选项,是源盘上文件的名称。
<BR>disk-number是包含file-name指定文件所在源盘的盘符序列码,该盘符序列码需在[SourceDisksNames]节中列出,并大于或等于1。
<BR>Subdir为可选项,指定文件所在源盘的子目录,如省略则源盘为缺省安装路径。
<BR>file-size为可选项,表明文件的大小,以字节为单位。</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done"><BR><STRONG>[DestinationDirs]</STRONG><BR>;指定CopyFiles、RenFiles或DelFiles入口的缺省操作目录<BR>;语法file-list-section=LDID,[Subdir]<BR>;LDID列表如下:<BR>;01
;current directory<BR>;04 ;backup directory<BR>;10 ;windows directory<BR>;11
;system dir<BR>;12 ;iosubsys<BR>;13 ;command<BR>;14 ;control panel
directory<BR>;15 ;printers directory<BR>;16 ;workgrou dir<BR>;17 ;inf dir<BR>;18
;help dir<BR>;19 ;administration dir<BR>;20 ;fonts<BR>;21 ;viewers<BR>;22
;vmm32<BR>;23 ;color dir<BR>;25 ;shared dir<BR>;26 ;winboot<BR>;28 ;host
winboot<BR>;30 ;root of boot drive<BR>;31 ;root of host drive of a virtual boot
drive<BR>;32 ;old windows dir if exists</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><BR>;以下例子为安装到window\web目录下<BR>;DefaultDestDir=10,"web"</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done"><STRONG>[Install]<BR></STRONG>提供了一个INF文件安装过程的总览,它识别文件内其他包含安装信息节的详细动作,是Windows内建安装函数识别安装过程和内容的真正入口[Install]</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done">;[Install]节分[DefaultInstall]和[OtherInstall]两类<BR>;[DefaultInstall]节节名DefaultInstall如前面表格内容所述被显式地在注册表中指定。<BR>;该节也是系统获取INF文件中安装信息的首要入口,当用户右击INF文件选“安装”时该节内容被执行。<BR>;[OtherInstall]与[DefaultInstall]节遵循相同的语法,但必须被显式地调用,常被用来定义反安装动作</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><BR>;缺省安装节<BR><STRONG>[DefaultInstall]</STRONG></DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done">;指明添加注册表的子节,等号后面的为自定义节名,例子见[add]节<BR>ADDREG=add</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><BR>;指明要删除的注册表子节,等号后面的为自定义节名<BR>DELREG=del</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done"><BR>;指明要要复制的文件子节,用于安装,Copyfiles命令可以替换系统正在访问的文件。这些功能通过普通的del和copy命令都无法实现<BR>CopyFiles=cfile</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done"><BR>;指明要要删除的文件子节,用于反安装,多个节以逗号隔开,该命令如果发现要删除的文件被锁定,就会把文件放到系统删除队列中排队<BR>;等系统重启动的时候,该文件就自动被删除了<BR><STRONG>DelFiles=删除文件段<BR></STRONG>;[删除文件段]<BR>;文件名列表<BR>;例子:<BR>;a.exe<BR>;b.sys</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done">;重命名文件段<BR><STRONG>RenFiles=重命名文件段</STRONG></DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done">;[重命名文件段]<BR>;语法:<BR>;[file-list-section]<BR>;new-file-name,old-file-name
<BR>;file1,file2 ;修改文件名file1为file2</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><BR>;更新INI文件段内容子节<BR><STRONG>UpdateInis =
更新INI文件段</STRONG></DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done">;[更新INI文件段]<BR>;ini-file, ini-section, [old-ini-entry],
[new-ini-entry], [flags] <BR>;ini-file 包含要更改条目的 .ini
文件名<BR>;ini-section 包含要更改条目的节名<BR>;old-ini-entry 可选,常用形式为
Key=Value<BR>;new-ini-entry 可选,常用形式为 <BR>;Key=Value。flags 是可选操作标记</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done">;例子<BR>;%01%\wincmd.ini,
Configuration,,"InstallDir=%01%"<BR>;%01%\wincmd.ini,
Configuration,,"Mainmenu=%01%\LANGUAGE\TCExtMenu.mnu"</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><STRONG>;更新ini文件值内容</STRONG><BR>updateinifield = </DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><STRONG>;ini文件更新注册表</STRONG><BR>ini2reg=aa.ini</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done"><STRONG>;更新config.sys内容<BR></STRONG>updatecfgsys=更新autoexec.bat段</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done">[更新autoexec.bat段]</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done">;更新autoexec.bat内容<BR>updateautobat=更新autoexec.bat段<BR>[更新autoexec.bat段]</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done"><BR>;定义资源节,像资源文件,调用时使用%REG_SZ%就代表了0x00000000<BR><STRONG>[Strings]</STRONG><BR>REG_SZ=0x00000000<BR>REG_BINARY=0x00000001<BR>REG_DWORD=0x00010001</DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"> </DIV>
<DIV twffan="done"><STRONG>;自定义添加注册表项的节</STRONG><BR>[add]</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done">;注意格式:HKEY(根键缩写),Subkey(子键),Valuename(键值名),Type(键值类型),Value(键值)<BR>;HKCU ->
HKEY_CURRENT_USER<BR>;HKCR -> HKEY_CLASSES_ROOT<BR>;HKLM ->
HKEY_LOCAL_MACHINE<BR>;HKU -> HKEY_USERS<BR>;HKU ->
HKEY_USERS<BR>;HKCC -> HKEY_CURRENT_CONFIG<BR>;HKDD ->
HKEY_DYN_DATA</DIV>
<DIV twffan="done"> </DIV>
<DIV
twffan="done">;解禁注册表编辑器<BR>HKCU,Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableRegistryTools,1,0<BR>;解禁IE的Internet选项<BR>HKCU,Software\Policies\Microsoft\Internet
Explorer\Restrictions,NoBrowserOptions,1,0<BR>;解禁IE的Internet选项里面的各个具体选项<BR>HKCU,Software\Policies\Microsoft\Internet
Explorer\Restrictions,NoBrowserOptions,1,0<BR>HKCU,Software\Policies\Microsoft\Internet
Explorer\Control Panel,Settings,1,0<BR>HKCU,Software\Policies\Microsoft\Internet
Explorer\Control Panel,HomePage,1,0<BR>HKCU,Software\Policies\Microsoft\Internet
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -