我有一個ClickOnce應用程序需要執行regasm
,以註冊剛剛更新的程序集。無法從ClickOnce應用程序調用ShellExecute「runas」
如果UAC關閉,它工作正常。但是,如果UAC處於打開狀態,則regsam
的退出代碼爲100
。如果我在cmd提示符下運行相同的命令,則會失敗並顯示有關需要管理員權限的消息。如果我在打開cmd提示符時使用run作爲管理員選項,它會成功。
我試着將清單中的asInvoker
更改爲highestAvailable,它在本地工作,但ClickOnce拒絕以這種方式發佈它。我試圖爲RegistryPermission添加一個迫切的權限需求,但沒有用。我試過設置
ProcessStartInfo.verb = "runas"
and .UseShellExecute = True
但仍然沒有愛!
我已經做了大量的關於CAS,UAC和ClickOnce的閱讀......我看到了一些關於UAC與ClickOnce夢不一致的地方(這讓我覺得BS是完全不同的),所以我想我的問題是,我正試圖做甚麼?如果是這樣,怎麼樣?
其餘只是背景信息,這並不嚴格相關:令人髮指的是,項目已完成,除了這個問題!
該項目的目的是爲Outlook自動更新「共享」AddIn(IExtensibility2
)。由於我們選擇退出VSTO,因此我們無法使用本機ClickOnce支持,因此我創建了一個ClickOnce應用程序,在該應用程序中我們將更新後的DLL作爲資源嵌入。它在啓動時執行,所以當新版本的ClickOnce應用程序可用時,它會自動下載;當它執行時,它會將安裝的版本與嵌入的副本版本進行比較,並提示用戶嵌入版本是否更新。我們希望能夠利用ClickOnce而不是推出我們自己的產品(這是我們爲legace VB6版本所做的)。
我有「這是一個完全信任的應用程序」單選按鈕集,在安全選項卡中。只要UAC被禁用,它可以執行任何操作,但如果不是,它會失敗/不會提示升級。 – 2012-03-02 10:48:28
其實,這是我的不好,UseShellExecute沒有被設置爲True,這是問題;與那個和動詞設置爲「runas」,UAC被調用。 – 2012-03-22 19:30:31