pnputil.exe
只有64位应用程序可用,这意味着有%SystemRoot%\System32\pnputil.exe
(x64),但没有%SystemRoot%\SysWOW64\pnputil.exe
(x86)。
在使用cd C:\Windows\System32
命令时,当前目录取决于启动Windows命令解释器cmd.exe
的应用程序的体系结构。64位应用程序实际上启动%SystemRoot%\System32\cmd.exe
,但32位应用程序会启动%SystemRoot%\SysWOW64\cmd.exe
。原因是Windows 文件系统重定向,对于x86应用程序,将任何文件访问重定向到Windows x64上的目录%SystemRoot%\SysWOW64
中的%SystemRoot%\System32
。
在运行此任务之前,最好检查该文件的存在性,pnputil.exe
仅存在于 %SystemRoot%\System32
目录中,不受 Windows 架构的限制。
if exist %SystemRoot%\System32\pnputil.exe (
set "SystemPath=%SystemRoot%\System32"
) else if exist %SystemRoot%\Sysnative\pnputil.exe (
set "SystemPath=%SystemRoot%\Sysnative"
) else (
echo ERROR: Cannot find pnputil.exe to install the driver.
echo/
pause
goto :EOF
)
%SystemPath%\pnputil.exe -i -a "%USERPROFILE%\Desktop\Drivers\IPEnabled_001.inf"
第一个
IF条件适用于32位Windows上的32位应用程序和64位Windows上的64位应用程序。
第二个
IF条件适用于64位Windows上的32位应用程序。
Sysnative是Windows x64上x86应用程序的特殊重定向器。对于x64应用程序,
Sysnative不存在。
Sysnative不是目录、符号链接或硬链接。因此,不可能使用
if exist %SystemRoot%\Sysnative
,因为此条件永远不会成立。需要检查重定向目录中是否存在文件,例如使用
if exist %SystemRoot%\Sysnative\*
,这仅对在64位Windows上运行当前32位
cmd.exe
的情况成立。
最终的
ELSE分支适用于例如没有
pnputil.exe
的Windows XP。
然而,不建议使用
pnputil.exe
来安装驱动程序。微软免费发布了
Driver Package Installer DPInst。有32位(dpinst32.exe)和64位版本(dpinst64.exe)。使用驱动程序包安装程序非常容易安装一个或多个驱动程序。
让我们看看像英特尔®这样提供适当驱动程序的硬件制造公司如何使用Driver Package Installer安装驱动程序。
驱动程序安装程序包通常具有以下目录结构:
- VISTA32
- VISTA64
- WIN7-x86
- WIN7-x64
- XPx86
- XPx64
或者像下面这样的目录结构:
安装程序包的目录结构因安装程序包而异,但这并不重要,通常很容易看出哪个目录中的驱动程序文件适用于哪个Windows版本,包括体系结构。此外,还有dpinst32.exe和dpinst64.exe,它们可以存储在所有包含驱动程序文件的子目录的父目录中,或者直接存储在包含驱动程序文件的目录中的两个驱动程序目录中之一。让我们将驱动程序安装示例简单化,假设包中只有两个驱动程序文件,一个适用于Windows x86,另一个适用于Windows x64。
- WIN-32
- dpinst32.exe
- *.cat
- *.dll
- *.inf
- *.sys
- WIN-64
- dpinst64.exe
- *.cat
- *.dll
- *.inf
- *.sys
在32位Windows中,使用简单的批处理文件安装32位驱动程序(s)的代码为
WIN-32
,在64位Windows上安装64位驱动程序(s)的代码为
WIN-64
,可以由32位或64位
cmd.exe
执行。
set "WINARCH=64"
if "%ProgramFiles(x86)%" == "" set "WINARCH=32"
cd WIN-%WINARCH%
dpinst%WINARCH%.exe
环境变量
ProgramFiles(x86)
只存在于 Windows x64 上,这使得确定 Windows 架构非常容易,详见
WOW64 Implementation Details。处理器架构并不重要,因为在配备 AMD 64 位(兼容)处理器的 PC 上,仍然可以安装 32 位 Windows。
dpinst32.exe
和
dpinst64.exe
在没有任何选项的情况下启动,将在当前目录中找到的所有驱动程序都安装。