我在我的應用程序中需要管理員權限。C#應用程序中的管理權限提示彈出窗口
我想要的是當我點擊按鈕執行該功能,它應該要求管理員用戶名和密碼。 (啓動UAC對話框,同時在該按鈕上顯示圖標)
可能嗎?
PS:我知道正確的清單文件進行修改啓動與管理中的應用。
此功能是大型程序的一部分,不能轉移到單獨的程序。
我在我的應用程序中需要管理員權限。C#應用程序中的管理權限提示彈出窗口
我想要的是當我點擊按鈕執行該功能,它應該要求管理員用戶名和密碼。 (啓動UAC對話框,同時在該按鈕上顯示圖標)
可能嗎?
PS:我知道正確的清單文件進行修改啓動與管理中的應用。
此功能是大型程序的一部分,不能轉移到單獨的程序。
實現此目的的最佳方法是擁有一個輔助可執行文件,其中包含需要管理權限的代碼,這些代碼會正確顯示。當您的應用程序需要執行需要管理權限的代碼時,請致電該程序。
例如:
MyProgram.exe - 沒有清單
MyProgramElevated.exe - 具有清單指示它需要管理員權限
當用作升高它MyProgram.exe
需要執行一個動作執行MyProgramElevated.exe
,通過命令行參數來指示需要提升的任務。
你可以使用StockIcons.Shield從Windows API Code Pack
您可以運行與管理權限的程序不改變使用「運行方式」動詞程序清單中的圖標(你也可以用它來重新啓動你的擁有管理員權限的程序):
Process.Start(new ProcessStartInfo()
{
Verb = "runas",
FileName = "Notepad.exe",
});
有一個COM API,讓你創建一個非管理員進程中管理員權限的COM對象,但我認爲這是非常困難的使用從.NET應用程序。
一旦完全授予管理員權限,您必須重新啓動應用程序,以便您的應用程序能夠利用新權限。因此,爲什麼@Rob建議你使用一個單獨的應用程序。我可以給出的最佳建議是,如果您真的需要,最初啓動應用程序時請求完全訪問權限。 – 2010-11-03 09:05:27
我很欣賞你的建議,但我們的應用程序甚至可以由來賓用戶執行(這是要求),並且有時我們需要管理員權限。 – Raj 2010-11-03 09:09:28
@Raj我相信UAC不能像那樣工作。祝你好運:) – 2010-11-03 09:12:07