Changez l'option exe pour exécuter en tant qu'administrateur par script de bat en Windows 7

Je ne peux pas désactiver UAC dans Windows 7 et je souhaite changer l'option .exe pour s'exécuter en tant qu'administrateur. Je peux faire un clic droit sur l'icône et goto compatibilité, puis changer cette option via l'interface graphique, mais je dois le faire par .bat ….. Quelqu'un peut-il me donner un demo .bat?

Cliquez avec le bouton droit sur le fichier BAT et appuyez sur Créer un raccourci . Le raccourci apparaît. Vous pouvez modifier les propriétés du raccourci et le configurer pour toujours exécuter en tant qu'administrateur. Bien sûr, vous devez exécuter le fichier BAT via le raccourci maintenant.

Je ne pense pas qu'il soit possible dans les fenêtres simples sans installer un utilitaire supplémentaire pour élever les privilèges de la ligne de commande.

Si vous acceptez de regrouper un tel utilitaire avec votre fichier Bat (ou de l'installer sur tout le système), vérifiez ceci: http://www.winability.com/elevate/

Une autre méthode consiste à faire en sorte que le fichier batch fasse appel à un VBscript qui élève alors le fichier batch.

Vous pouvez télécharger Elevate PowerToys qui vous permet d'élever des fichiers batch.

 elevate -batchfile- 

Une autre méthode consiste à créer un script d'auto-élévation. Cela peut être une méthode fragile, mais il suppose essentiellement que vous avez un accès en écriture au% temp%

C'est une version modifiée de l'un ici .

 @ECHO OFF ::Ask for admin access if exist "admincheckOK.txt" goto adminOK1 del /Q admincheckOK.vbs ECHO. ECHO. Please wait... echo.Set objShell = CreateObject("Shell.Application") > %TEMP%\admincheckOK.vbs echo.Set FSO = CreateObject("Scripting.FileSystemObject") >> %TEMP%\admincheckOK.vbs echo.strPath = FSO.GetParentFolderName (WScript.ScriptFullName) >> %TEMP%\admincheckOK.vbs echo.If FSO.FileExists(%0) Then >> %temp%\admincheckOK.vbs echo. Dim oShell >> %TEMP%\admincheckOK.vbs echo. Set oShell = WScript.CreateObject ("WScript.Shell") >> %TEMP%\admincheckOK.vbs echo. oShell.run "cmd.exe /c echo admincheckOK > admincheckOK.txt" >> %TEMP%\admincheckOK.vbs echo. Set oShell = Nothing >> %TEMP%\admincheckOK.vbs echo. objShell.ShellExecute "cmd.exe", " /c " ^& %0 ^& " ", "", "runas", 1 >> %TEMP%\admincheckOK.vbs echo.Else >> %TEMP%\admincheckOK.vbs echo. MsgBox "Script file not found" >> %TEMP%\admincheckOK.vbs echo.End If >> %TEMP%\admincheckOK.vbs cscript //B %TEMP%\admincheckOK.vbs goto theend ::Admin Access allowed :adminOK1 del /Q admincheckOK.txt del /Q admincheckOK.vbs ::**Body of Batchfile** ::**Code you want elevated** pause REM Following statement required if Admin access denied :theend del /Q admincheckOK.vbs 

Pour un exe, si vous mettez un manifeste dans le même dossier que l'exe qui demande l'élévation, chaque fois que quelqu'un exécute l'application, ils seront invités à l'élever. En supprimant le fichier du dossier, le comportement redire à la normale.

Le nom du fichier doit être exename.exe.manifest, en d'autres termes, si vous avez foo.exe, vous devez nommer le fichier foo.exe.manifest. Le contenu doit ressembler à ceci:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="appname" type="win32"/> <description>elevate execution level</description> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> 

(Le nom et la description n'ont pas d'importance, n'hésitez pas à faire correspondre votre application. Ou pas.)

Cela ne fonctionnera pas si l'exe comporte un manifeste intégré demandant un niveau d'exécution inférieur, mais fonctionnera pour une application sans manifeste.

Je ne suis pas sûr de savoir pourquoi vous souhaitez activer ou désactiver ce fichier avec un fichier batch, mais vous pouvez facilement le faire en demandant que votre fichier batch renomme ce fichier sur foo.exe.notmanifest et retourne à foo.exe.manifest.