155 votes

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

Y a-t-il un moyen de forcer un programme qui nécessite normalement des privilèges administratifs (via UAC) à s'exécuter sans eux ? (c'est-à-dire sans invite UAC et sans accès système étendu.)

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


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

  1. En modifiant l'exécutable, je peux supprimer l'entrée trustInfo du manifeste (ou le manifeste entièrement, afin que je puisse en utiliser un externe), permettant au programme de démarrer sans UAC. Malheureusement, cela modifie l'exécutable, qui se ferme peu de temps après en raison d'un test de somme de contrôle interne.
  2. En utilisant Process Explorer, je peux le lancer en tant qu'Utilisateur Limité. Cependant, cela semble le limiter significativement plus que je ne le voudrais (il s'exécute comme Internet Explorer en Mode Protégé et peut donc accéder à significativement moins que ce que peut mon utilisateur standard non élevé).

2 votes

Vous spécifiez de ne pas modifier l'exécutable, pourtant la modification du fichier .exe est l'une de vos méthodes tentées?

3 votes

@ekaj J'ai seulement précisé que après avoir découvert que ça ne fonctionnerait pas ;)

0 votes

Pourriez-vous peut-être préciser le programme, même si vous ne l'utilisez plus? Cela pourrait aider les gens à savoir ce qu'il essaie d'accéder qui nécessite des privilèges administratifs

95voto

Vom Points 962
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Exécuter sans élévation de privilège"

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

Enregistrez ce texte dans .reg et ajoutez-le au Registre de Windows. (Double-cliquez dessus pour effectuer l'opération.)

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ège".

Dans certains cas - une petite quantité de 0.1% de programmes peuvent demander deux fois l'autorisation de l'UAC.

2 votes

J'avais l'habitude d'utiliser le shim Application Compatibility Toolkit, mais c'était beaucoup de travail pour chaque exécutable et laissait des éléments inutiles dans la base de registre pour chaque fichier aussi. Cette méthode fonctionne et je l'aime beaucoup mieux.

2 votes

Accepter cela semble être la méthode la plus simple, et j'ai enfin été en mesure de le vérifier. A également la propriété très agréable d'être utilisable de manière triviale en une seule commande (supprimez les \" et remplacez-les par ").

0 votes

@Vom - Connaissez-vous un moyen facile de contourner les programmes qui posent plusieurs questions ? Merci!

76voto

Hjulle Points 912

Enregistrer sous nonadmin.bat :

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

Maintenant, vous pouvez faire glisser et déposer des programmes ici pour les exécuter sans autorisation d'administrateur.

Cela ne nécessite pas de privilèges d'administrateur comme le fait de changer cette clé de registre. De plus, vous ne surchargerez pas le menu contextuel.

Basé sur la réponse de Vom


Mise à jour : Devrait maintenant fonctionner avec des programmes ayant des espaces dans leur nom également.

0 votes

J'ai essayé sur quelques programmes nécessitant un accès à mes disques et cela ne les a pas détectés ou n'a pas fonctionné en premier lieu :/ (rufus rufus.akeo.ie par exemple)

10 votes

@keinabel C'est probablement parce qu'ils avaient réellement besoin de l'administrateur pour fonctionner. Ce script est destiné aux programmes qui exigent des privilèges d'administrateur sans réellement faire quelque chose qui le nécessite. L'accès brut aux lecteurs est une caractéristique typique de l'administrateur.

3 votes

Plutôt sympa ! J'ai pu installer XAMPP en utilisant cette méthode.

41voto

Mxx Points 2763

J'espère ne pas être 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 RunAs intégrée à Windows, lorsqu'elle est exécutée en tant qu'administrateur, peut le faire avec l'interrupteur /trustlevel.

RUNAS /trustlevel: programme

/showtrustlevels  affiche les niveaux de confiance qui peuvent être utilisés
                  en tant qu'arguments pour /trustlevel.
/trustlevel       Le  doit être l'un des niveaux énumérés
                  dans /showtrustlevels.

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

0 votes

Je confirme que cela ne fonctionne pas. Je viens de le tester et j'ai obtenu une erreur : "ERREUR DE RUNAS : Impossible de lancer - (nom du programme ici). L'opération demandée nécessite une élévation".

10 votes

@user1258361 vous devez exécuter cette commande à partir de l'invite élevée, tout comme je l'ai écrit en gras...

0 votes

Il ne semble pas nécessiter une invite élevée sous Windows 7...

29voto

Chris Nava Points 4048

Si vous avez une application particulière que vous voulez toujours exécuter sans UAC, vous pouvez la cibler avec le Registre (ajoutez le texte à un fichier REG et importez-le 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 alternatif ou changement d'interaction utilisateur.

Microsoft appelle ce processus l'ajout du RunAsInvoker "Compatibilité Shim".

1 votes

3 votes

Merci beaucoup! C'était la seule chose qui a fonctionné pour moi! J'avais une application qui était appelée depuis le menu contextuel de Windows, et elle apparaissait toujours en tant qu'administrateur, malgré le fait qu'elle était appelée correctement partout ailleurs. Après cette correction, l'application a commencé à être appelée correctement.

8voto

Shayan Points 1193

Si c'est un fichier d'installation exe qui nécessite des privilèges d'administration, il y a 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 de force avec des privilèges élevés même s'il n'en a pas besoin :

description de l'image ici

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 si l'un de ces mots est inclu dans le nom du fichier, il ne s'exécutera pas en mode élevé.

Un autre mot-clé est patch comme indiqué par Mgamerz dans les commentaires.

Ceci est documenté dans la documentation UAC (User Account Control) :

La détection de l'installateur détecte les fichiers d'installation, ce qui empêche les installations d'être exécutées sans la connaissance et le consentement de l'utilisateur.

La détection de l'installateur s'applique uniquement à :

  • Fichiers exécutables 32 bits.

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

  • Processus interactifs s'exécutant en tant qu'utilisateur standard avec le contrôle de compte d'utilisateur 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 inclut 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

2 votes

Bien sûr, cela fonctionne uniquement lorsque le manifeste de l'application ne spécifie pas explicitement qu'elle doit s'exécuter en mode élevé.

3 votes

@DanielB: en fait, ce tour ne fonctionne que lorsque le manifeste n'est pas présent

1 votes

Un autre mot-clé est "correctif". Juste pour les personnes qui passent en cherchant sur Google.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X