.inf驱动文件中的OEM段是否存在占位符未替换的bug?如何获取驱动名称?
.inf驱动文件中的OEM段是否存在占位符未替换的bug?如何获取驱动名称?
别担心,这可不是什么占位符没替换的bug!这种带%的变量写法是Windows驱动inf文件的标准设计,我来给你拆解明白~
首先,为啥会出现%PRINTER1%这类内容?
这些带%的标记是inf文件的字符串占位符,它们实际对应的驱动名称都定义在inf文件的
[Strings]段落里。你可以翻到文件末尾(或者直接搜索[Strings]关键词),就能看到类似这样的定义:[Strings] OEM = "HP Inc." PRINTER1 = "HP Color LaserJet Pro M453-4 Series"系统读取inf文件时,会自动把
%PRINTER1%替换成后面的实际字符串,所以这是正常的模块化写法,不是遗漏的占位符。
接下来,给你几个获取驱动名称的实用方法:
- 直接找字符串定义:优先查看inf文件里的
[Strings]段,找到PRINTER1对应的文本,那就是驱动的官方显示名称; - 检查配套文件:如果找不到
[Strings]段,或者变量没定义,大概率这个inf是依赖同文件夹下的其他配套inf/资源文件的,你可以看看同目录里的其他文件,搜索相同的变量名; - 跳过名称,直接用inf安装:针对你用PowerShell手动安装的需求,其实完全可以不用纠结驱动名称——用
pnputil命令(需管理员权限)直接安装:
这个命令会自动识别inf里的硬件ID(比如你提到的pnputil /add-driver "C:\你的驱动路径\目标驱动.inf" /installUSBPRINT\HPHP_Color_LaserJet_4596),完成驱动安装,不需要手动输入名称。
另外,你提到自动安装失败,大概率是系统没自动匹配到正确的硬件ID,手动指定inf的思路是对的。如果pnputil安装后需要配置打印机,可以先通过Get-PrinterDriver命令查看已安装的驱动名称,再用Add-PrinterDriver或Add-Printer完成后续配置。
备注:内容来源于stack exchange,提问作者npr_se




