我正嘗試使用msiexec構建更新程序來卸載程序,然後安裝更新的版本。
這裏是我的代碼:使用msiexec卸載獲取UAC錯誤,即使我已設置管理權限
command = "/x{[uninstall string here]}";
command += "/qn+ /Le c:\\test\\msilog.txt";
ProcessStartInfo psi = new ProcessStartInfo("msiexec");
psi.Arguments = command;
//psi.UseShellExecute = true;
//psi.Verb = "runas";
Process.Start(psi);
我
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
集我的清單,並設置爲應用程序的清單。 當我運行這個時,我彈出框顯示「AppSetup失敗」,並且日誌文件顯示
錯誤1730.您必須是管理員才能刪除此應用程序。要刪除此應用程序,您可以以管理員身份登錄,或與技術支持小組聯繫以獲得幫助。
但是,如果我運行CMD以管理員身份,並在
msiexec /x{[uninstall string here]} /qn+ /Le c:\\test\\msilog.txt
類型它的工作原理非常愉快。
我在這裏錯過了什麼?
(我也嘗試過取消註釋上面的那兩行,因爲這是我發現以管理員身份運行的一種方式,但它在嘗試執行之前彈出UAC對話框,即使設置了/ qn也是如此。)
聽起來像是誤會。您無法隱藏UAC提示並仍然獲得管理員權限(除非禁用UAC)。 – 2010-11-10 17:44:54
那麼,沒有辦法以編程方式使用msiexec的管理權限而無需某種用戶交互?如何在沒有用戶交互的情況下卸載我自己的程序? – Marcus 2010-11-10 18:03:49
你沒有,因爲如果這是可能的,每個人都可以卸載任何其他人的「自己的程序」這種方式。 – 2010-11-10 18:34:49