69

1 つのメソッドに対して管理者権限を要求することはできますか?

このようなもの:

[RequireAdminRightsForThisMethod()]

private void TheMethod(){

    // Do something

}
4

2 に答える 2

87

メソッドに属性を追加して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();
于 2010-01-07T16:31:11.720 に答える
16

A method can require administrative privileges to run, but it's not possible to automatically elevate to Admin when executing a method.

于 2010-01-07T16:27:25.183 に答える