pnputil.exe未被识别为内部或外部命令

时间:2014-05-29 12:57:03

标签: windows cmd installanywhere

当我通过命令propmt执行命令来安装驱动程序时:

cd C:\Windows\System32
pnputil.exe -i -a "C:\Users\Desktop\Drivers\IPEnabled_001.inf"

工作正常。

But if i execute the command in Installanywhere tool 
It showing the error message:
pnputil.exe is not recognized as an internal or external command

那么请你告诉它为什么显示错误信息以及如何重新发送该错误? 提前谢谢。

还请建议安装inf驱动程序的替代方法

1 个答案:

答案 0 :(得分:1)

pnputil.exe在64位Windows上仅作为64位应用程序提供,这意味着有%SystemRoot%\System32\pnputil.exe(x64)但没有%SystemRoot%\SysWOW64\pnputil.exe(x86)。

使用cd C:\Windows\System32时哪个目录成为当前目录取决于启动Windows命令解释程序cmd.exe的应用程序架构上的64位Windows。 64位应用程序真正启动%SystemRoot%\System32\cmd.exe,但32位应用程序启动%SystemRoot%\SysWOW64\cmd.exe。原因是Windows File System Redirector将对{x 1}}的任何文件访问重定向到Windows x64 for x86应用程序上的目录%SystemRoot%\System32

最好在执行此文件之前检查此文件是否存在,此任务仅在Windows体系结构的任何Windows上的目录%SystemRoot%\SysWOW64中运行pnputil.exe

%SystemRoot%\System32

对于32位Windows上的32位应用程序和64位Windows上的64位应用程序,第一个 IF 条件为真。

对于64位Windows上的32位应用程序,第二个 IF 条件为真。 Sysnative 是Windows x64上x86应用程序的特殊重定向程序。 x64应用程序不存在 Sysnative Sysnative 不是目录或符号链接或硬链接。所以不可能使用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 exist %SystemRoot%\Sysnative,这仅适用于在64位Windows上运行当前32位if exist %SystemRoot%\Sysnative\*

最终的 ELSE 分支是正确的,例如在没有cmd.exe的Windows XP上。

但是,建议不要使用pnputil.exe来安装驱动程序。 Microsoft免费发布Driver Package Installer DPInst 。有一个32位(dpinst32.exe)和一个64位版本(dpinst64.exe)。使用驱动程序包安装程序可以非常轻松地安装一个或多个驱动程序。

让我们看看硬件生产公司如何提供适当的驱动程序,如英特尔®使用驱动程序包安装程序安装驱动程序。

驱动程序安装程序包中通常有一个目录结构,如:

  • VISTA32
  • Vista64上
  • WIN7 86
  • WIN7-64
  • XPx86
  • XPx64

或者像:

这样的目录结构
  • VISTA
    • 86
    • 64
  • WIN7
    • 86
    • 64
  • XP
    • 86
    • 64

目录结构因安装程序包到安装程序包而异,但这并不重要,通常很容易看出哪个驱动程序文件在哪个目录中适用于哪个版本的Windows,包括体系结构。

另外还有pnputil.exedpinst32.exe存储在带有驱动程序文件的所有子目录的父目录中,或者只存储在包含驱动程序文件的目录中的两个驱动程序目录中。

让我们使驱动程序安装示例非常简单,并假设程序包中只有两个驱动程序文件,一个用于Windows x86,另一个用于Windows x64。

  • WIN-32
    • dpinst32.exe
    • *。猫
    • *。DLL
    • * INF
    • *。SYS
  • WIN-64
    • dpinst64.exe
    • *。猫
    • *。DLL
    • * INF
    • *。SYS

通过简单的批处理文件在64位Windows上的dpinst64.exe中的32位Windows上的WIN-32和64位驱动程序中安装32位驱动程序的代码通过32位或64位WIN-64执行非常容易。

cmd.exe

环境变量set "WINARCH=64" if "%ProgramFiles(x86)%" == "" set "WINARCH=32" cd WIN-%WINARCH% dpinst%WINARCH%.exe 仅存在于Windows x64上,这使得确定Windows体系结构非常容易,另请参阅WOW64 Implementation Details。处理器的体系结构并不重要,因为在具有AMD 64位(兼容)处理器的PC上可以安装32位Windows x86。

ProgramFiles(x86)dpinst32.exe启动时没有任何选项只需安装当前目录中的所有驱动程序。

相关问题