第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 GUID 卸載應用程序

通過 GUID 卸載應用程序

Go
白衣非少年 2021-12-07 10:16:38
我嘗試使用 GUID 卸載產品,當我在命令提示符下直接執(zhí)行它時效果很好,但是,當我嘗試使用 Golang 執(zhí)行它時收到錯誤消息我的代碼:// Powershell_Commandpackage mainimport (    "fmt"    "os/exec")func main() {    out, err := exec.Command("cmd","/C","wmic","product","where","IdentifyingNumber=\"{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\"","call","uninstall").Output()    fmt.Println("err::",err)    fmt.Println("out::",string(out))}輸出是:錯誤:: 退出狀態(tài) 2147749911出去::提前致謝
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

(這個問題在很大程度上與 Go 無關。)


不過有幾點需要注意:


不要調用cmd.exe:它是為了運行腳本,您不是在運行腳本,而只是調用程序。所以你的電話變成


 out, err := exec.Command("wmic.exe", "product", "where",

      `IdentifyingNumber="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"`,

      "call", "uninstall").Output()

(請注意使用反引號來制作“原始”字符串——這有助于防止“反斜杠”。


您不會獲取正在運行的程序的標準錯誤流。


考慮使用CombinedOutput()的的exec.Cmd類型。


另一點:除非您的 Go 程序是“GUI”子系統(tǒng)(即,不打算在控制臺窗口中運行),否則通常更明智的做法是讓生成的程序輸出任何輸出到與其宿主進程相同的媒體。為此,您只需將其標準流連接到您的流程中:


cmd := exec.Command("foo.exe", ...)

cmd.Stdin = os.Stdin

cmd.Stdout = os.Stdout

cmd.Stderr = os.Stderr

err := cmd.Run()

您也不需要wmic——只需msiexec直接調用:


msiexec.exe /uninstall {GUID}

原因是無論如何wmic最終都會調用msiexec,因為除了調用其卸載程序之外,沒有其他方法可以卸載 Windows 應用程序。


查看完整回答
反對 回復 2021-12-07
  • 1 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號