是否可以要求單一方法的管理員權限?單一方法的管理員權限
事情是這樣的:
[RequireAdminRightsForThisMethod()]
private void TheMethod(){
// Do something
}
是否可以要求單一方法的管理員權限?單一方法的管理員權限
事情是這樣的:
[RequireAdminRightsForThisMethod()]
private void TheMethod(){
// Do something
}
您可以將PrincipalPermission
屬性添加到您的方法,要求其執行管理權限:
Security Principles and Local Admin Rights in C# .Net
:[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")] public void MyMethod() { }
這在下面的文章中詳細描述
如果您正在尋找一種方法提升已經存在的進程我懷疑這是可能的,因爲管理員權限是在進程級別給啓動時的進程給出的(參見相關的question)。您必須以「管理員」身份運行您的應用程序才能獲得所需的行爲。
但是,有一些技巧可以讓你做你想做的事情,但要警告這可能會帶來嚴重的安全風險。請參閱MSDN論壇以下線:(從評論)
Launching MyElevatedCom Server without prompting Administrator credentialls from Standard User
更新
看來,如果更新需要提升你的應用程序更新是最好的做一個單獨的進程(另一個可執行文件,或者使用命令行開關調用的應用程序)。對於單獨的過程,您可以請求標高如下:
var psi = new ProcessStartInfo();
psi.FileName = "path to update.exe";
psi.Arguments = "arguments for update.exe";
psi.Verb = "runas";
var process = new Process();
process.StartInfo = psi;
process.Start();
process.WaitForExit();
有可能,如果你有證書來改變線程來模擬這些管理憑據。我沒有在.NET中完成它,但我有在C + +/Win32。 – kenny 2010-01-07 16:49:20
搞笑我張貼相同的鏈接。 ..有一段時間在你之前...... – JonH 2010-01-07 16:51:23
@kenny:是的,這當然是對的,但我懷疑是否有可能提升當前流程(這對於某些任務來說是必需的)。請參閱此處的討論:http://social.msdn.microsoft.com/Forums/en-IE/windowscompatibility/thread/831ffd77-6bc4-4857-9947-d74923184b0b。 – 2010-01-07 16:54:38
的方法可能需要管理員權限才能運行,但它不可能執行方法時自動提升到管理員。
爲什麼這會得到downvoted? – 2010-01-07 16:40:05
您想要它做什麼? – SLaks 2010-01-07 16:29:21
只是一個註釋:如果有人給你一個與WindowsIdentity.GetCurrent()或類似的答案,這將只適用於蝙蝠而不是網頁的winforms。 – diadem 2010-01-07 16:30:00
我希望當應用程序執行一種方法時,UAC要求權限。 – lluismontero 2010-01-07 16:32:24