64 votes

Droits d'administration pour une seule méthode

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

Quelque chose comme ça :

[RequireAdminRightsForThisMethod()]

private void TheMethod(){

    // Do something

}

84voto

0xA3 Points 73439

Vous pouvez ajouter un PrincipalPermission à votre méthode pour demander des privilèges administratifs pour son exécution :

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

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

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

Si vous cherchez un moyen d'élever un processus déjà existant, je doute que cela soit possible car les privilèges d'administrateur sont accordés au niveau du processus lors de son démarrage (voir cet article connexe question ). Vous devrez exécuter votre application "en tant qu'administrateur" pour obtenir le comportement souhaité.

Il existe toutefois des astuces qui peuvent vous permettre de faire ce que vous voulez, mais sachez que cela peut entraîner de graves risques pour la sécurité. Consultez le fil de discussion suivant dans les forums MSDN :

Lancement de MyElevatedCom Server sans demander les informations d'identification de l'administrateur à partir de l'utilisateur standard.

Mise à jour (à partir d'un commentaire)

Il semble que si une mise à jour nécessite une élévation, il est préférable que la mise à jour de votre application soit effectuée par un processus distinct (soit un autre exécutable, soit 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();

15voto

SLaks Points 391154

Une méthode peut nécessiter des privilèges administratifs pour être exécutée, mais il n'est pas possible de s'élever automatiquement au rang d'administrateur lors de l'exécution d'une méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X