簡體   English   中英

單個方法的管理員權限

[英]Admin rights for a single method

是否可以為單個方法要求管理員權限?

像這樣的東西:

[RequireAdminRightsForThisMethod()]

private void TheMethod(){

    // Do something

}

您可以向方法添加PrincipalPermission屬性,以請求其執行的管理權限:

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
public void MyMethod()
{
}

這在以下文章中有更詳細的描述:

C#.Net中的安全原則和本地管理員權限

如果您正在尋找提升現有流程的方法,我懷疑這是可行的,因為在啟動時會在流程級別為流程提供管理員權限(請參閱此相關問題 )。 您必須“以管理員身份”運行您的應用程序才能獲得所需的行為。

但是,有一些技巧可能會讓你做你想做的事情,但要注意這可能會帶來嚴重的安全風險。 請參閱MSDN論壇中的以下主題:

在不提示標准用戶的管理員憑據的情況下啟動MyElevatedCom服務器

更新(來自評論)

似乎如果更新需要提升,則應用程序更新最好由單獨的進程(另一個可執行文件或使用命令行開關調用的應用程序)完成。 對於該單獨的流程,您可以按如下方式請求提升:

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();

方法可能需要管理權限才能運行,但在執行方法時無法自動提升為Admin。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM