les droits d'administrateur pour une seule méthode
-
19-09-2019 - |
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
}
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:
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.