1つの方法で管理者権限を要求することはできますか?
このようなもの:
[RequireAdminRightsForThisMethod()]
private void TheMethod(){
// Do something
}
メソッドに PrincipalPermission
属性を追加して、その実行に管理者権限を要求できます。
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
public void MyMethod()
{
}
これについては、次の記事で詳しく説明します。
既存のプロセスを昇格させる方法を探している場合、管理者特権がプロセスレベルで起動時にプロセスに与えられるため、これは可能だとは思いません(関連する question を参照)。目的の動作を得るには、「管理者として」アプリケーションを実行する必要があります。
ただし、希望することを実行できる可能性のあるいくつかのトリックがありますが、これにより深刻なセキュリティリスクが生じる可能性があることに注意してください。 MSDNフォーラムの次のスレッドを参照してください。
更新(コメントから)
更新に昇格が必要な場合、アプリケーションの更新は別のプロセス(別の実行可能ファイル、またはコマンドラインスイッチで呼び出されたアプリケーション)で行うのが最適です。その別のプロセスでは、次のように昇格をリクエストできます。
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();
メソッドを実行するには管理者特権が必要な場合がありますが、メソッドの実行時に管理者に自動的に昇格することはできません。