Question

Est-il possible d'exiger des droits d'administrateur pour une seule méthode?

Quelque chose comme ceci:

[RequireAdminRightsForThisMethod()]

private void TheMethod(){

    // Do something

}
Était-ce utile?

La solution

Vous pouvez ajouter un attribut PrincipalPermission à votre méthode pour exiger des privilèges d'administrateur pour son exécution:

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

Ceci est décrit plus en détail dans l'article suivant:

  

Principes de sécurité et des droits de l'administrateur local en C # .Net

Si vous êtes à la recherche d'un moyen d'élever un processus déjà existant, je doute que cela soit possible que des privilèges d'administrateur sont données sur le niveau de processus à un processus au démarrage (voir ce lié question ). Vous devez exécuter votre application « en tant qu'administrateur » pour obtenir le comportement souhaité.

Cependant, il y a quelques trucs qui pourraient vous permettre de faire ce que vous voulez, mais il faut savoir que cela pourrait ouvrir les risques de sécurité graves. Voir le fil suivant dans les forums MSDN:

  

Lancement MyElevatedCom serveur sans demander l'administrateur credentialls de l'utilisateur standard

Mise à jour (de commentaire)

Il semble que si une mise à jour nécessite une élévation de votre mise à jour de l'application est mieux fait par un processus distinct (soit un autre exécutable, ou votre application appelée avec un commutateur de ligne de commande). Pour ce processus séparé, vous pouvez demander l'élévation comme suit:

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

Autres conseils

Une méthode peut exiger des privilèges d'administrateur pour exécuter, mais il est impossible d'élever automatiquement à l'administrateur lors de l'exécution d'une méthode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top