近期有客戶想要透過本身的程式來呼叫並自動執行script 檔案來更新某driver
其中會呼叫 "call pnputil.exe -i -a C:\xxx\xxx.inf" 來執行更新 driver 部分
但是會出現這樣的訊息
’pnputil’ is not recognized as an internal or external command, Operable program or batch file.
它找不到C:\Windows\system32 內的 pnputil.exe
這個時候你可能會想說嘗試把路徑給它, 變成
"call C:\Windows\System32\pnputil.exe -i -a C:\xxx\xxx.inf"
結果應該會出現一樣的訊息
這個時候只要將指令改為
"call C:\Windows\Sysnative\pnputil.exe -i -a C:\xxx\xxx.inf"
或
"call %WINDIR%\Sysnative\pnputil.exe -i -a C:\xxx\xxx.inf"
則就可以找到 pnputil 來執行了
大家一定會覺得sysnative是什麼? 為什麼這樣改就可以了? 怎麼這麼神奇?
%WINDIR%\Sysnative 資料夾是不存在的, 它只是64位元Windows系統提供的一種重定向機制,
64位元 Windows 通過 System32 和 SysWoW64 兩個資料夾來區分64位元和32位元的系統文件, 當32位元的應用程式嘗試訪問System32資料夾的時候, 系統會自動把它轉到SysWoW64資料夾, 這樣32位元應用程序在32位元和64位元系統就可以運行了, 而不需要為了64位元系統而把system32改成SysWoW64
留言列表