無法使用32位程序為正在運行的64位系統服務


最近在做一個補丁管理功能,其中有一個過程是把補丁從服務器下載下來,然后進行安裝。

發現在Windows Vista及其之后的Windows 7、Windows 8等系統中,微軟的提供了兩種格式的補丁包:.psf和.cab,在Windows XP之前,是會有.exe格式的補丁文件,直接運行就可以進行安裝。我選擇了安裝.cab格式的補丁包,安裝的時候需要執行一個命令,如下:

dism /online /add-package /packagepath:補丁包路徑

用管理員權限運行CMD命令窗口,輸入命令,就可以安裝系統對應的補丁包。

我們需要用VC代碼運行命令,我的程序是32位的,操作系統是64位的,補丁包是64位的,在CMD窗口中執行命令運行的很嗨皮,但是用代碼執行就會報錯:無法使用32位dism為正在運行的64位系統服務。。。

就是說不能用32位的程序執行這個命令為64位系統安裝補丁包。

看到了一個解決方案,將命令卸載腳本里,執行腳本就可以了,所以立即效仿,下面是腳本內容

cd /d C:\Windows\Sysnative
dism /online /add-package /packagepath:補丁包路徑

第一句是為了調用System32中的cmd.exe,就是64位的命令行程序。

system執行腳本,成功運行。

如此應該是使用了64位的cmd.exe執行了命令。

但是在這之前嘗試用CreateProcess打開System32下的cmd.exe,執行命令並沒有成功,有些奇怪的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM