Existe-t-il un moyen de forcer un programme nécessitant normalement des privilèges d’administrateur (via UAC) à s’exécuter sans eux? (c'est-à-dire: pas d'invite UAC et pas d'accès à l'échelle du système .)
Ajouté: Sans modifier l'exécutable lui-même.
En dépit de la réponse de James, j'ai trouvé plusieurs façons de le faire presque peut être fait:
trustInfo
du manifeste (ou du manifeste, afin de pouvoir utiliser une entrée externe), permettant ainsi au programme de démarrer sans UAC. Malheureusement, cela modifie l'exécutable, donc il se ferme peu de temps après en raison d'un test de somme de contrôle interne.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-cliquez dessus devrait faire l'affaire.)
Ensuite, cliquez avec le bouton droit de la souris 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, une petite quantité de 0,1% des programmes peut poser deux fois des questions sur UAC Prompt.
Enregistrer dans nonadmin.bat
:
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"
Maintenant, vous pouvez glisser et déposer des programmes sur ceci pour les exécuter sans admin.
Cela ne nécessite pas de privilèges d'administrateur, contrairement à la modification de cette clé de registre. De plus, vous n'encombrerez pas le menu contextuel.
Basé sur Vom's answer
Update: Devrait maintenant fonctionner avec les programmes qui ont également des espaces dans name.
J'espère que je ne serai pas trop en retard pour 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 de Windows, 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, lancer un programme explicitement sans élévation nécessite une commande élevée Invite . Allez comprendre. :) J'espère que ça t'aide.
Si vous avez toujours une application à exécuter sans UAC, vous pouvez la cibler avec le registre (ajoutez le texte dans 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 ou changement d’interaction avec l’utilisateur.
Microsoft appelle ce processus en ajoutant la variable RunAsInvoker
"Compatibility Shim" .
J'ai résolu ce problème aujourd'hui à l'aide de la boîte à outils de personnalisation d'applications MS.
J'ai suivi les instructions dans un article de Tech Republic .
Fondamentalement:
1) vous obtenez la boîte à outils de MS ici .
2) Cliquez sur Fix
3) Choisissez l’option RunAsInvoker
4) Faites un clic droit sur le correctif et choisissez Installer
Dans sa question, Andrew a déclaré que les solutions suivantes ne fonctionnaient pas vraiment:
En modifiant l'exécutable, je peux supprimer l'entrée trustInfo du manifeste (ou du manifeste, afin de pouvoir utiliser une entrée externe), ce qui permet au programme de démarrer sans UAC. Malheureusement, cela modifie l'exécutable, donc il se ferme peu de temps après en raison d'un test de somme de contrôle interne.
J'ai pu modifier et modifier un fichier externe .manifest pour le logiciel que j'utilisais
<ms_asmv2:requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
à
<ms_asmv2:requestedExecutionLevel level="asInvoker" uiAccess="false" />
Il s'avère que le logiciel que j'utilisais ne nécessitait pas vraiment de droits d'administrateur. J'ai donc pu l'exécuter sur un compte d'utilisateur standard sans mot de passe UAC ni administrateur. Merci!