2010-08-04 13:49:40 +0000 2010-08-04 13:49:40 +0000
128
128

Forcer un programme à s'exécuter *sans* privilèges d'administrateur ou UAC ?

Est-il possible de forcer un programme qui nécessite normalement des privilèges d'administrateur (via UAC) à s'exécuter sans eux ? (ie : pas d'invite UAC et pas d'accès à l'ensemble du système.)

Ajouté : Sans modifier l'exécutable lui-même.


Malgré la réponse de James, j'ai trouvé quelques moyens de le faire presque :

  1. En modifiant l'exécutable, je peux supprimer l'entrée trustInfo du manifeste (ou le manifeste entier, donc je peux en utiliser un externe), ce qui permet au programme de démarrer sans UAC. Malheureusement, cela modifie l'exécutable, de sorte qu'il se termine peu de temps après à cause d'un test de checksum interne.
  2. En utilisant l'explorateur de processus, je peux le lancer en tant qu'utilisateur limité. Cependant, cela semble le limiter beaucoup plus que je ne le souhaiterais (il fonctionne comme le mode protégé IE et peut donc accéder à un nombre d'applications bien inférieur à ce que peut faire mon utilisateur standard non habilité).

Réponses (9)

76
76
76
2012-07-18 15:20:44 +0000
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

Enregistrez ce texte dans <name_of_file>.reg et ajoutez-le au registre Windows. (Double-cliquer dessus devrait faire l'affaire).

Ensuite, faites un clic droit sur l'application que vous souhaitez exécuter sans privilèges administratifs et sélectionnez “Exécuter sans élévation de privilèges”.

Dans certains cas - peu nombreux - 0,1% des programmes peuvent demander deux fois l'invite UAC.

57
57
57
2015-10-02 11:27:02 +0000

Sauvegarder sur nonadmin.bat :

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

Vous pouvez maintenant glisser-déposer des programmes sur cette page pour les exécuter sans administration.

Cela ne nécessite pas de privilèges d'administration comme le fait la modification de la clé de registre. De plus, vous n'encombrerez pas le menu contextuel.

D'après la réponse de Vom answer


Mise à jour: Devrait maintenant fonctionner avec les programmes qui ont des espaces dans le nom aussi.

35
35
35
2012-01-05 08:15:03 +0000

J'espère ne pas arriver trop tard à la fête, mais je cherchais une question similaire et sans voir de réponse ici, j'ai découvert que la commande intégrée de Windows RunAs, lorsqu'elle est exécutée en tant qu'administrateur, peut le faire avec le commutateur /trustlevel.

RUNAS /trustlevel:<TrustLevel> program

/showtrustlevels displays the trust levels that can be used
                  as arguments to /trustlevel.
/trustlevel <Level> should be one of levels enumerated
                  in /showtrustlevels.

Cela a fonctionné dans mon cas. Ironiquement, le démarrage d'un programme explicitement sans élévation requiert une invite de commande élevée. Allez comprendre. :) J'espère que ça vous aidera.

19
19
19
2016-09-09 20:16:13 +0000

Si vous avez une application particulière que vous voulez toujours exécuter sans UAC, vous pouvez la cibler avec le Registre (ajouter le texte à un fichier REG et l'importer dans le Registre) :

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\example\application.exe"="RunAsInvoker"

Contrairement à cette réponse , cette solution ne nécessite aucun clic ou changement de l'interaction utilisateur.

Microsoft appelle ce processus ajouter le RunAsInvoker “Compatibility Shim” .

4
4
4
2019-01-25 11:54:23 +0000

S'il s'agit d'un fichier de configuration (installation) exe qui nécessite un privilège d'administration, il existe une astuce pour l'exécuter sans accès élevé :

Si le nom du fichier contient des mots comme setup ou install windows l'exécute avec force avec un accès élevé même s'il n'a pas besoin d'un accès élevé :

Si le fichier . exe contient un manifeste, ces heuristiques pour l'élévation ne s'appliquent pas.

Par exemple, si le manifeste indique que l'exe n'a pas besoin d'élévation, même en incluant l'un de ces mots dans le nom du fichier, il ne sera pas exécuté avec un accès élevé.

Un autre mot clé est patch comme indiqué par Mgamerz dans les commentaires. Cela est documenté dans les documents UAC (User Account Control) :

Installer la détection détecte les fichiers d'installation, ce qui permet d'éviter que des installations soient exécutées à l'insu et sans le consentement de l'utilisateur.

Installer la détection s'applique uniquement aux :

  • fichiers exécutables 32 bits.

  • applications sans attribut de niveau d'exécution demandé.

  • Processus interactifs s'exécutant comme un utilisateur standard avec UAC activé.

Avant qu'un processus 32 bits ne soit créé, les attributs suivants sont vérifiés pour déterminer s'il s'agit d'un installateur :

  • Le nom du fichier comprend des mots clés tels que “install”, “setup” ou “update”.

Mode lecture ici : https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works

3
3
3
2011-05-18 01:05:06 +0000

J'ai résolu ce problème aujourd'hui en utilisant la boîte à outils de personnalisation des applications de MS.

J'ai suivi les instructions dans un article de tech republic .

En gros :

1) vous obtenez la boîte à outils de MS ici .

2) Cliquez sur Corriger

3) Choisissez l'option RunAsInvoker

4) Cliquez avec le bouton droit de la souris sur la correction et choisissez Installer

2
2
2
2013-07-21 02:56:41 +0000

Dans sa question, Andrew a déclaré que ce qui suit ne fonctionnait pas tout à fait :

En modifiant l'exécutable, je peux supprimer l'entrée trustInfo du manifeste (ou du manifeste entier, donc je peux en utiliser un externe), ce qui permet au programme de démarrer sans UAC. Malheureusement, cela modifie l'exécutable, de sorte qu'il se ferme peu après en raison d'un test de somme de contrôle interne.

J'ai pu modifier un fichier .manifest externe pour le logiciel que j'utilisais et changer

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

en

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

Il s'est avéré que le logiciel que j'utilisais ne nécessitait pas vraiment de droits d'administrateur, de sorte que j'ai pu l'exécuter sur un compte d'utilisateur standard sans UAC ni mot de passe d'administrateur. Merci !

-2
-2
-2
2012-04-20 04:28:43 +0000

J'ai corrigé ce problème en allant modifier les permissions du dossier qui contenait le programme.

J'ai ajouté chaque utilisateur qui exécutera ce programme et leur ai donné des privilèges de “contrôle total”. Cela a réglé le problème et j'ai laissé la case “exécuter en tant qu'administrateur” non cochée.

Je n'ai aucun problème de sécurité pour les utilisateurs qui exécuteront le programme.

-5
-5
-5
2010-08-04 14:09:46 +0000

Non, si un programme a besoin de l'UAC, alors il essaie d'accéder à quelque chose en dehors de son bac à sable. Le programme ne fonctionnera pas correctement sans l'accès élevé.

Si vous voulez juste vous débarrasser de la notification, vous pouvez désactiver l'UAC.

Disable UAC on Windows Vista : Démarrez, tapez “user”. Cliquez sur “Comptes d'utilisateurs”. Dans la fenêtre qui s'ouvre, cliquez sur “Paramètres de contrôle des comptes d'utilisateurs” et ensuite sur “Désactiver l'UAC”.

Disable UAC on Windows 7 : Démarrer, tapez “user”. Cliquez sur “Paramètres de contrôle des comptes d'utilisateurs”. Faites glisser la barre de choix jusqu'en bas pour “Ne jamais notifier”.