altere a opção exe para ser executada como administrador pelo script bat no Windows 7

3

Não consigo desativar o UAC no Windows 7 e desejo alterar a opção .exe para ser executado como administrador. Eu posso clicar com o botão direito no ícone e goto compatibilidade, em seguida, alterar esta opção através da interface gráfica, mas eu tenho que fazer por. Bat ..... Alguém pode me dar um demo .bat.

    
por studiohack 22.11.2011 / 13:57

4 respostas

5

Clique com o botão direito do mouse no arquivo BAT e pressione Criar atalho . O atalho aparecerá. Você pode editar as propriedades do atalho e configurá-lo para sempre ser executado como administrador. Claro, você tem que executar o arquivo BAT através do atalho agora.

    
por 23.11.2011 / 06:47
1

Eu não acho que seja possível em janelas simples sem instalar um utilitário adicional para elevar privilégios da linha de comando.

Se você aceitar o empacotamento desse utilitário com seu arquivo bat (ou instalá-lo em todo o sistema), verifique: link

    
por 22.11.2011 / 14:12
0

Outro método é fazer com que o batchfile chame um VBscript que eleva o batchfile.

Você pode baixar os PowerToys do Elevate, que permitem elevar arquivos batch.

elevate -batchfile-

Outro método é criar um script de auto-elevação. Isso pode ser um método frágil, mas basicamente pressupõe que você tenha acesso de gravação ao% temp%

É uma versão modificada do aqui .

@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
    
por 23.11.2011 / 07:56
0

Para um exe, se você colocar um manifesto na mesma pasta que o exe que solicita a elevação, toda vez que alguém executar o aplicativo, ele será solicitado a elevá-lo. Excluir o arquivo da pasta colocará o comportamento de volta ao normal.

O nome do arquivo deve ser exename.exe.manifest, em outras palavras, se você tiver foo.exe, deverá nomear o arquivo foo.exe.manifest. O conteúdo deve ficar assim:

<?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>

(O nome e a descrição não importam, sinta-se à vontade para fazê-los corresponder ao seu aplicativo. Ou não.)

Isso não funcionará se o exe tiver um manifesto incorporado solicitando um nível de execução mais baixo, mas funcionará para um aplicativo sem manifesto.

Não sei por que você deseja ativar e desativar esse recurso com um arquivo em lotes, mas é possível fazer isso com facilidade, renomeando esse arquivo em lote para foo.exe.notmanifest e de volta para foo.exe.manifest .

    
por 27.11.2011 / 16:25