2011-01-31 141 views
5

Im當前正在使用ApplicationLauncher/Autoupdater。 因此,要安裝/更新應用程序到「Program Files」,我需要請求管理員權限。單一方法的管理員權限

那麼,因爲Updater只需要寫一些東西,如果新的版本被發現,我試圖只 請求權限,如果發現新的版本。

的更新執行每次,應用程序啓動之前,所以要求「每次」爲Adminrights是無解...

我搜索了很多,發現如下:

[PrincipalPermission(SecurityAction.Demand, Role = @"Administrators")] 
    private void InstallOrUpdate(AppItem appItem) 

但文我試着這個,更新器拋出SecurityException ...

請求主體權限失敗。

我在做什麼錯?

此致 dognose

回答

3

運行後,您無法提升應用程序的權限。爲了請求管理員角色,它需要在可執行文件的啓動時完成。

您的最佳選擇是讓您的更新程序啓用不同的可執行文件來執行InstallOrUpdate,或者在此時重新運行自身(使用不同的命令行參數)。

+0

當我在Windows中進行管理工作時,我看到窗體中帶有管理圖標的按鈕。當我點擊按鈕時,UAC要求提升特權。你是否說過,對於每個管理按鈕,Windows正在啓動一個新進程?或者在那裏發生了不同的事情? – Phil 2011-01-31 16:52:01

2

UAC提升是每個進程,即作爲一個整體被升高,而不是每個單獨的方法的過程。最好的行動方式是創建一個需要提升特權的特定操作流程,並在實際需要做某些工作時從更新器啓動該流程。 This might help