2017-02-16 1 views
0

J'ai une méthode/événement Form1_Load et je veux donner Administrator RightsC# Obtenir des droits d'administrateur pour une méthode unique

Parce que dans cette méthode/événement associer mon programme avec mon extension, ne veulent pas commencer l'application en tant qu'administrateur, si je fais ce programme ne fonctionnera pas correcly

donc j'ai un code:

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")] 

private void Form1_Load(object sender, EventArgs e) 
{ 
... 
} 

Mais pas fonctionne et mon application génère l'erreur:

UnauthorizedAccessException

Comment puis-je résoudre ce problème?

+0

Votre code exige que l'utilisateur soit un administrateur, mais je ne pense pas que ce que vous vouliez dire est-ce? Vous voulez élever les privilèges de l'utilisateur? Est-ce Win Forms? –

+0

Oui, veulent les droits d'administrateur pour faire s'associer et c'est WinForms – alix54

+0

Je vous suggérerais de lire et d'absorber [Que faire si deux programmes ont fait cela?] (Https://blogs.msdn.microsoft.com/oldnewthing/20050607-00/ ? p = 35413) par Raymond Chen avant d'aller trop loin sur cette route. –

Répondre

0

Cette réponse ne vous plaira pas, mais vous ne pouvez pas élever l'utilisateur pour une méthode, mais vous devez demander une élévation pour l'ensemble de l'application lorsqu'elle est chargée.

Veuillez voir https://msdn.microsoft.com/en-us/library/bb756929.aspx?f=255&MSPPError=-2147217396 pour savoir comment faire.

Ceci est également utile https://code.msdn.microsoft.com/windowsapps/CSUACSelfElevation-644673d3

EDIT:

Si vous avez une tâche à faire, comme l'association d'une extension, vous pouvez écrire la logique pour que, dans un EXE distinct qui ne fait que cette tâche. Ensuite, vous pouvez lancer l'EXE de votre programme principal avec

System.Diagnostics.Process.Start("<path to exe>"); 

vous avez suivi Pourvu que les conseils donnés dans le lien ci-dessus, votre EXE fonctionnera et l'élévation de la demande, et devrait être en mesure de faire ce que vous avez besoin.

1

"associer mon programme à mon extension": votre conception est erronée. Cette association est faite lorsque votre programme est installé. Et là, ce n'est pas un problème: l'installateur est en cours d'exécution.

+0

Mon programme n'a pas d'installation, est externe – alix54