Domanda

E 'possibile richiedere i diritti di amministratore per un unico metodo?

Qualcosa di simile a questo:

[RequireAdminRightsForThisMethod()]

private void TheMethod(){

    // Do something

}
È stato utile?

Soluzione

È possibile aggiungere un attributo PrincipalPermission per il metodo di richiedere privilegi amministrativi per la sua esecuzione:

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

Questo è descritto in maggior dettaglio nel seguente articolo:

  

principi di sicurezza e diritti di amministratore locale in C # .Net

Se siete alla ricerca di un modo per elevare un processo già esistente Dubito che questo è possibile in quanto i privilegi di amministratore sono riportati sulla processo di livello ad un processo all'avvio (si veda questo correlato domanda ). Si dovrà eseguire l'applicazione "come amministratore" per ottenere il comportamento desiderato.

Tuttavia, ci sono alcuni trucchi che potrebbero permettere di fare ciò che si vuole, ma sappiate che questo potrebbe aprire rischi per la sicurezza gravi. Vedere il seguente thread nel forum MSDN:

  

Avvio MyElevatedCom Server senza chiedere amministratore credentialls da utente standard

Update (dal commento)

Sembra che se un aggiornamento richiede l'aggiornamento elevazione applicazione è fatto meglio un processo separato (o altro eseguibile, o l'applicazione chiamata con una riga di comando). Per questo processo separato è possibile richiedere elevazione come segue:

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

Altri suggerimenti

Un metodo può richiedere privilegi amministrativi per eseguire, ma non è possibile elevare automaticamente Admin durante l'esecuzione di un metodo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top