close

近期有客戶想要透過本身的程式來呼叫並自動執行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

 

arrow
arrow
    全站熱搜

    莎拉美學 發表在 痞客邦 留言(0) 人氣()