Comment configurer mon application pour qu'elle s'exécute automatiquement en tant qu'administrateur?

9

J'ai créé un fichier patch avec un exécutable à l'intérieur de celui-ci en utilisant la fonction Winrar SFX.
Après avoir exécuté le fichier SFX et que l'extraction se termine, mon fichier exécutable ne s'exécutera jamais car il n'a pas de privilèges d'administrateur. Je me demande comment je peux accorder à l'administrateur l'accès à ce fichier par un moyen de programmation (comme un fichier batch).

Je sais que je peux faire un clic droit dessus, aller dans "Propriétés", choisir l'onglet "Compatibilité" puis cocher la case "Exécuter en tant qu'administrateur".

Le problème est que les utilisateurs qui téléchargeront ce correctif ne le savent pas (et mon exe ne s'exécute que lorsque vous cliquez dessus avec le bouton droit et choisissez "Ouvrir en tant qu'administrateur", sinon il ne s'ouvrira jamais ni n'affichera le popup UAC).

J'ai essayé quelques façons, comme le "Elevator Runner (Elevate me)", etc, mais je cherche en fait quelque chose de plus simple que.
J'ai juste besoin que l'exe soit toujours exécuté en tant qu'administrateur.

Rafael Vidal
la source
2
Remarque pour les mods: aucune migration vers SO n'est requise ici.
Karan

Réponses:

15

Ce que vous devez faire est d'incorporer un manifeste d'application dans l'EXE.

  1. Enregistrez les éléments suivants en tant que fichier texte appelé App.exe.manifest :

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
            <security>
                <requestedPrivileges>
                    <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
                </requestedPrivileges>
            </security>
        </trustInfo>
    </assembly>
    
  2. Téléchargez le SDK Windows.

  3. À l'intérieur, vous trouverez mt.exe, c'est-à-dire l' outil Manifest . Appelez-le comme suit:

    mt.exe -manifest "App.exe.manifest" -outputresource:"App.exe";#1
    
  4. S'il n'y a aucune erreur, vous avez terminé. Vous pouvez supprimer le fichier manifeste et distribuer uniquement l'EXE. Son exécution devrait lui faire demander automatiquement un accès administrateur à chaque fois.

La source

Karan
la source
Je vais le tester. Au fait, est-il possible d'améliorer un peu ce "Manifeste"? Vous aimez le faire en tant qu'administrateur sans demander d'accès administrateur? Merci
Rafael Vidal
Cela signifie-t-il que vous souhaitez élever silencieusement et accéder à l'administrateur? À moins que vous désactiviez l'UAC, ce n'est pas possible, sinon quel serait l'intérêt de l'UAC et ne pensez-vous pas que tous les logiciels malveillants feraient cela?
Karan
Je comprends votre point de vue, mais je sais qu'il existe des moyens ... pas facile à coup sûr, mais il y en a, comme le programme "Elevate Me" ... Quoi qu'il en soit, faire exécuter l'exe en tant qu'administrateur est suffisant pour l'instant. Merci vraiment d'avance
Rafael Vidal
1
Tous ces programmes pour contourner l'invite d'élévation utilisent l' astuce bien connue du Planificateur de tâches qui nécessite un accès administrateur. Puisque vous cherchez à le faire sur n'importe quel PC arbitraire sur lequel votre SFX est exécuté, vous ne pouvez pas créer silencieusement la tâche planifiée sans le consentement de l'utilisateur standard. En fait, si un programme faisait cela sur mon PC (créer silencieusement une tâche planifiée pour contourner l'UAC), je le classerais instantanément comme malware et le supprimerais.
Karan
Très bon Karan, a parfaitement fonctionné. Je vous suggère seulement d'ajouter à la réponse la nécessité de lancer CMD en tant qu'ADMIN, sinon cela ne fonctionnera pas ... Merci encore
Rafael Vidal
2

Lors de la création de votre archive, demandez un accès administratif .entrez la description de l'image ici

MDMoore313
la source
MDMoore313 merci pour votre temps, mais je suppose que je ne me suis pas bien expliqué. Je n'ai pas besoin d'exécuter SFX en tant qu'administrateur. J'ai besoin d'exécuter un fichier spécifique en tant qu'administrateur ("my_app.exe"), qui se trouve à l'intérieur du fichier SFX. Le fait est que double-cliquer sur ce fichier ne le fera pas fonctionner. La seule façon de l'exécuter est de faire un clic droit dessus et de choisir "Exécuter en tant qu'administrateur"
Rafael Vidal
@RafaelVidal le SFX lance-t-il votre application? Si c'est le cas, votre application disposera des droits d'administrateur. Sinon, je mettrai à jour ma réponse.
MDMoore313
Non, il ne lance pas l'application. L'utilisateur doit le faire manuellement, il peut donc cocher la case «Exécuter en tant qu'administrateur» sous l'onglet «Compatibilité» ou cliquer avec le bouton droit sur le menu contextuel «Exécuter en tant qu'administrateur»
Rafael Vidal
@RafaelVidal y a-t-il une raison pour laquelle vous ne voulez pas que WinRAR lance l'exe et que l'utilisateur exécute le SFX lui-même? il semble que cela permettrait d'atteindre le même objectif et de résoudre votre problème d'administration. Si vous êtes toujours concentré sur le marquage de votre programme pour qu'il s'exécute en tant qu'administrateur, vous auriez de meilleures chances d'obtenir une réponse en cas de débordement de pile (
marquez
Le SFX lance le fichier, mais les utilisateurs peuvent exécuter ce fichier par eux-mêmes plus tard et il n'y aura alors aucun SFX pour l'exécuter. C'est pourquoi l'exe doit être marqué comme "exécuté en tant qu'administrateur"
Rafael Vidal