2017-02-16 66 views
0

我有一個方法/事件Form1_Load,我想給它Administrator RightsC#獲取管理員權限的單一方法,

因爲這樣的方法/事件我有我的延長我的計劃聯繫起來,也不想開始應用程序管理員,如果我這樣做程序將無法正常工作正確地將

所以我有一個代碼:

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")] 

private void Form1_Load(object sender, EventArgs e) 
{ 
... 
} 

但不是作品和我的應用程序提供了錯誤:

UnauthorizedAccessException

我怎樣才能解決這個問題?

+0

你的代碼要求用戶是管理員,但我不認爲你的意思是?你想提升用戶權限?這是Win Form嗎? –

+0

是的,想要做關聯的管理員權限,這是WinForms – alix54

+0

我建議你閱讀並吸收[如果兩個程序做了這個?](https://blogs.msdn.microsoft.com/oldnewthing/20050607-00/ ?p = 35413)由Raymond陳之前你走得太遠這條路線。 –

回答

0

你不會喜歡這個答案,但是你不能提升一個方法的用戶,而是你需要爲整個應用程序請求提升,當它加載。

請參閱https://msdn.microsoft.com/en-us/library/bb756929.aspx?f=255&MSPPError=-2147217396如何做到這一點。

這也是有幫助的https://code.msdn.microsoft.com/windowsapps/CSUACSelfElevation-644673d3

編輯:

如果你有一個任務做,像一個擴展相關聯,那麼你可以寫,邏輯在一個單獨的EXE,只有做這個任務。然後,你可以從你的主程序啓動該EXE與

System.Diagnostics.Process.Start("<path to exe>"); 

只要你遵循了上面的鏈接的建議,你的EXE將運行並要求擡高,並且應該能夠做到你所需要的。

1

「將我的程序與我的擴展相關聯」:您的設計是錯誤的。該關聯在您的程序安裝完成後完成。那裏完全沒有問題:安裝程序正在運行。

+0

我的程序沒有安裝,是外部的 – alix54