Question

J'ai essayé de faire des choses Win32 en C # 3.5 pour obtenir élevé des droits d'utilisateur pour une application console. Je développe sur Visual Studio 2008 SP1 / RDA et les choses excellent travail lorsqu'il est exécuté sous le débogueur. Les choses fonctionnent bien aussi quand je lance l'application de la console autonome. Les choses fonctionnent bien aussi quand j'empaquette tout en un MSI et l'installer sur un serveur 2003 et exécuter l'application de la console.

Si je prends le même MSI et l'installer sur un serveur 2008 avec l'UAC activé, puis exécutez l'application de la console, je reçois des messages comme ceci:

Unable to set right for the account "DOMAIN\QAUSER": SeCreateGlobalPrivilege
System.UnauthorizedAccessException    Attempted to perform an unauthorized operation.

Je ne peux pas attendre mon déploiement / admins à tout faire avec mon application autre que l'installer, et ils ne vont pas à désactiver l'UAC. Il doit y avoir une certaine façon programmatique aux droits de l'utilisateur définir correctement que je peux ajouter à l'application de la console - Quelqu'un sait comment

Merci.

Était-ce utile?

La solution

Vous utilisez probablement " Global \" préfixe au nom de l'objet dans votre application et votre application sera lancée dans une session de serveur hôte distant session bureau (hôte de session RD). Dans le cas où votre programme doivent permettre SE_CREATE_GLOBAL_NAME (SeCreateGlobalPrivilege) privilège. Voir C # - Comment activer SeDebugPrivilege (mais l'utilisation SE_CREATE_GLOBAL_NAME au lieu de? SE_DEBUG_NAME) ou Manipulez privilèges en code géré fiable, en toute sécurité et comme efficacement un exemple.

Autres conseils

Je suppose que l'UAC est activé sur la machine 2008 et je ne peux pas encore de commentaire sur votre question pour savoir.

Si oui, assurez-vous que dans votre fichier app.manifest dans VS (sous propriétés), le changement

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />

à

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

Même si le code est en cours d'exécution en tant qu'administrateur, vous devez obtenir par l'avertissement de l'UAC.

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