Question

je veux donner un fichier (déjà présent sur le .exe ordinateur client) autorisations pour exécuter toujours avec des autorisations administratives.

S'il vous plaît noter que le fichier i veut donner des autorisations est déjà sur la machine cible. et je veux changer les permissions de ce fichier par un autre programme écrit en c # et il dispose des autorisations administratives pour tout faire.

moi avec bonté savoir comment le faire je suis en utilisant ce code

        System.Security.AccessControl.FileSecurity fs = File.GetAccessControl(@"c:\inam.exe");
        FileSystemAccessRule fsar = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
        fs.AddAccessRule(fsar);
        File.SetAccessControl(@"c:\inam.exe", fs);

ce code va changer les permissions correctement mais quand j'exécuter inam.exe après l'exécution de ce code, le contrôle de compte ne pas apparu et aussi le inam.exe ne peux pas effectuer des opérations administratives.

en fait, je l'ai déjà déployé une application sur plus de 10.000 clients afin veut sortir un patch pour résoudre le problème des droits d'administration.

Était-ce utile?

La solution

Construire un fichier manifeste (voir http://www.gregcons.com/KateBlog/AddingAManifestToAVistaApplication .aspx entre autres) et nommez-le Whatever.exe.manifest et le mettre dans le même dossier que le fichier EXE. Le nanifest doit définir le requestedExecutionLevel à requireAdministrator. Tous ensemble.

Si vous possédez l'autre exe, vous pouvez intégrer le manifeste lorsque vous construisez. Ceci est presque trivial dans Visual Studio 2008 et plus. Voir l'onglet Application et déroulant les Manifestes déroulante. Il y a des instructions à proximité. De même, lorsque vous utilisez VS 2008 pour ajouter un manifeste à votre projet, vous ne devez pas taper tout le XML, vous copiez juste le niveau d'exécution demandé de appropriée des commentaires qui sont générés pour vous.

Autres conseils

Exécuter avec des privilèges d'administrateur n'est pas une autorisation de fichier.

Ceci est généralement configuré en ajoutant un fichier manifeste (soit aux ressources Win32 dans le fichier EXE, ou comme un manifeste externe). Ce fichier manifeste peut indiquer si les besoins d'application à exécuter élevé ou non.

Je ne suis pas tout à fait sûr dans lequel Windows le paramètre de cache profondément compatibilité « Exécuter ce programme en tant qu'administrateur ».

L'utilisation d'un fichier manifeste est la meilleure approche, mais une alternative serait de définir par programme le drapeau « Exécuter ce programme en tant que administrateur » (l'option que vous trouverez dans l'onglet Compatibilité des propriétés d'un EXE), en définissant simple clé d'enregistrement. Vous devez créer une valeur de chaîne (REG_SZ) sous l'une de ces touches (si vous voulez que le paramètre soit par utilisateur ou par machine, respectivement):

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ couches

ou

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ couches

Le nom des besoins de valeur pour être le chemin complet à vos exécutables (si le chemin contient des espaces, n'entourent pas le chemin entre guillemets), et les données de la valeur doit contenir la chaîne RUNASADMIN.

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