2014-07-28 03:24:17 +0000 2014-07-28 03:24:17 +0000
50
50

Is het mogelijk om als beheerder

automatisch een batchbestand uit te voeren? Ik vraag me af of het mogelijk is om automatisch een batchbestand te openen als beheerder als u dubbelklikt op het batchbestand, omdat de commando’s moeten worden uitgevoerd met beheerdersrechten.

Opmerking: Ik weet al wat de oplossing is van rechtsklikken op het bestand en klikken op Run As Administrator, maar dit is geen automatische oplossing.

答案 (9)

45
45
45
2014-07-28 03:43:30 +0000

Ja, je bent in staat om een batch-bestand met administratieve rechten uit te voeren. Helaas kunt u dit niet direct vanuit het batchbestand zelf doen. Je zou eerst een snelkoppeling moeten maken van dat batchbestand en de eigenschappen voor die snelkoppeling moeten veranderen om dit te laten werken.

Om een snelkoppeling te maken zijn er vele manieren, maar de eenvoudigste en snelste manier is door gebruik te maken van de Send to optie in het contextmenu.

Right click batch file > Send to > Desktop (create shortcut)

Natuurlijk kun je de snelkoppeling sturen naar waar je maar wilt. Om het batchbestand als admin te laten draaien, volgt u de onderstaande stappen:

  1. 1. Klik met de rechtermuisknop op de snelkoppeling die je net hebt gemaakt (moet op het bureaublad staan of waar je het ook naartoe stuurt). 2. Klik onder het tabblad Shortcut op de knop Geavanceerd…
  2. Klik op het tabblad Shortcut. 3. Vink het vakje Uitvoeren als beheerder aan en druk op OK om zowel het modale venster als het hoofdvenster van de eigenschappen te openen.
  3. Klik op de knop Uitvoeren als beheerder. 4. Voer de snelkoppeling uit door erop te dubbelklikken en het batchbestand moet als beheerder worden uitgevoerd.
33
33
33
2014-12-15 16:55:24 +0000

Zoals gepost in een antwoord door Ben Gripka op een andere vraag:

REM --add the following to the top of your bat file--

@echo off

:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------
5
5
5
2015-02-10 14:25:39 +0000

op Windows 7

  1. Maak een snelkoppeling naar dat Batch-bestand

    1. Klik met de rechtermuisknop op het snelkoppelingsbestand
  2. Klik met de rechtermuisknop op het snelkoppelingsbestand

  3. Klik met de rechtermuisknop op het snelkoppelingsbestand

  4. Klik met de rechtermuisknop op het snelkoppelingsbestand

  5. Klik op advance-knop om een selectievakje te vinden voor het uitvoeren als beheerder

Vink de onderstaande screenshot aan

4
4
4
2014-10-07 18:42:22 +0000

Het geaccepteerde antwoord werkt inderdaad. Maar ik vond dat ik in Windows 7 het UAC-dialoogvenster moest doorstaan telkens als er op de snelkoppeling werd geklikt. Deze IMHO doet aanzienlijk afbreuk aan het “automatisch” in deze vraag!

Toen ontdekte ik dat in mijn eigen situatie het .bat bestand in kwestie wordt uitgevoerd door Task Scheduler. In dit geval zorgt het aanvinken van de Run with highest privileges optie op het General tabblad van de taak ervoor dat het probleem wordt opgelost. De .bat wordt dan uitgevoerd als beheerder zonder problemen.

PS: Ik realiseerde me niet dat ik geen afbeeldingen kon uploaden op dit antwoord, want ik heb nu een mooie kleine schermafdruk bij me! Of kan ik dat wel?

3
3
3
2015-05-31 14:49:17 +0000

U kunt mijn script Batch_Admin gebruiken om de Administrator automatisch te verheffen voor gebruik in elk type Batch eigen script, of BAT of .CMD. Deze functie verzekert het werk op een standaard omgeving, met standaard tools en op dezelfde manier in verschillende Windows systemen. Het maakt gebruik van verschillende standaard en ingebouwde Windows commando’s. Gebruik geen andere externe scripts. Het kan gebruikt worden om elk programma als Administrator aan te roepen, niet alleen scripts Batch. Het volstaat om een klein script te maken, dat vervolgens het programma aanroept dat de toestemming van Administartor vereist. Plaats dit in een willekeurige zoekmap PATH (vanaf %PATH%).

Om het te gebruiken, voegt u eenvoudigweg de volgende regel in (precies zoals) in het moederscript Batch, dat als Administrator moet worden uitgevoerd. Dit kan het beste gedaan worden bovenaan ons ouderscript en het is het beste dat eerst, die via de CALL verder wordt aangeroepen, enkele subscripts (zie gedetailleerde uitleg hieronder).

net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*

Dit kan ingevoegd worden in elk kinderscript, aangeroepen door de CALL-syntaxis. Om een bericht weer te geven terwijl het nog steeds geen beheerdersrechten heeft, b.v. voor 5 seconden voor het aanroepen van Batch_Admin stel de variabele “ShowAdminInfo” in op het aantal seconden

SET ShowAdminInfo=5
net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*

Dus hoe het werkt:

  • Roept UAC op. ShellExecute via VBScript om gebruikersrechten

op te halen - Batch draait het script, of BAT of CMD

  • Script caller kan een lange naamruimte hebben in de oproep tussen aanhalingstekens

  • Geef alle parameters terug die het masterscript aanroepen vanaf de commandoregel, alsof er geen transmissie van de oproep is en start iets vanaf nul, ook met speciale karakters, zoals uitroeptekens (! ) en percentage (%), en ook met haakjes ()

  • Houdt een locatie van het masterscript vast als de oproep plaatsvond in de directory waar dit script de master

is - Auxiliary geeft een bericht weer als we voor onszelf de variabele “ShowAdminInfo” instellen, b.v. voor 5 seconden, wat kan voorkomen dat de rechten van de Administrator onmiddellijk worden doorgegeven en dat er aanvullende informatie wordt gegeven en de mogelijkheid van een geïnformeerde beslissing wordt geboden. Voorbeelden van instellingen die moeten worden ingesteld: SET ShowAdminInfo=5 Standaard, omdat deze variabele niet gedefinieerd is, wordt deze niet weergegeven.

  • Het script roept ook in het systeemzoekpad % PATH% en van de netwerkbron aan, bijvoorbeeld: \Computer sharetest.bat

  • Voorkomt dat er misverstanden ontstaan bij het schrijven van de benodigde hulpbestanden als het script meerdere Batchmin aanroept. Het gebruikt het willekeurige nummer van 1 tot 100

  • Maar het beste is om het te gebruiken op het script van de ouders. De overgang naar Administrator rechten vereist altijd dat je het script volledig opnieuw uitvoert, in een nieuw venster, in een nieuwe omgeving, zonder gebruik te maken van de variabelen die eerder in ons script zijn ingesteld en de waarden van deze variabelen gingen toen niet over om als Administrator aan te roepen. Alleen het script wordt weer uitgevoerd.

Hieronder een compleet script Batch_Admin. Uitgebreide informatie hierover staat op mijn site.

Kopieer de volgende tekst in Kladblok en sla het op als: Batch_Admin.bat

@echo off
if "%~1"=="" (echo ***Batch_Admin*** &echo.&echo Automatically get admin rights for another Batch. See info inside.&TIMEOUT /T 30>nul&goto:eof)

:: A D M I N I S T R A T O R - Automatically get admin rights for script batch. Paste this on top: net session >nul 2>nul&if errorlevel 1 Batch_Admin "%~0" %*
:: Also keep Batch directory localisation and then set variable: PATH_BAT
:: if earlier variable "ShowAdminInfo" is empty (not defined) then no info, else showing info with number of seconds
::
:: Elaboration: Artur Zgadzaj
setlocal
setlocal DisableDelayedExpansion

SET "Localy="
if exist "%~1" SET "Localy=YES"
if exist "%~1.BAT" SET "Localy=YES"
if exist "%~1.CMD" SET "Localy=YES"
if defined Localy FOR %%I IN ("%~1") DO SET "PATH_BAT=%%~dI%%~pI"

 SET P1=%~1
 SET Parameters=%*
 SET Parameters=%Parameters:!=^^!%
setlocal EnableDelayedExpansion
 SET Parameters=!Parameters:%P1%=!
 SET Parameters=!Parameters:%%=%%%%!
setlocal DisableDelayedExpansion
 SET Parameters=%Parameters:~3%

net session >nul 2>nul&if not errorlevel 1 goto Administrator_OK

if not defined ShowAdminInfo goto skip_message_Administrator
echo.
echo Script: %~1
echo.
echo *****************************************************************
echo ***R U N N I N G A S A D M I N I S T R A T O R***
echo *****************************************************************
echo.
echo Call up just as the Administrator. You can make a shortcut to the script and set:
echo.
echo shortcut ^> Advanced ^> Running as Administrator
echo.
echo Alternatively run once "As Administrator"
echo or in the Schedule tasks with highest privileges
echo.
echo Cancel Ctrl-C or wait for launch %ShowAdminInfo% seconds ...
TIMEOUT /T %ShowAdminInfo% > nul

:skip_message_Administrator
MD %TEMP% 2> nul
SET /A $Admin$=%RANDOM% * 100 / 32768 + 1

SET "Percent="
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul
echo %Parameters% > "%TEMP%\$Admin_%$Admin$%_Test.bat"
if not exist "%TEMP%\$Admin_%$Admin$%_Test.bat" SET Percent=^"
del "%TEMP%\$Admin_%$Admin$%_Test.bat" 2>nul

echo @SET "PATH_BAT=%PATH_BAT%" > "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
echo @SET "BatchFullName=%BatchFullName%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"
if defined Localy (echo @CD /D "%PATH_BAT%" >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat")
echo @"%~1" %Parameters% %Percent% >> "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat"

echo SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
echo UAC.ShellExecute "%TEMP%\$Admin_%$Admin$%_Batch_Start.bat", "", "", "runas", 1 >> "%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
"%TEMP%\$Admin_%$Admin$%_Batch_getPrivileges.vbs"
endlocal
exit /B

:Administrator_OK
"%~1" %Parameters%
goto:eof
REM ***A D M I N I S T R A T O R - Automatically get admin rights (The End)***
1
1
1
2015-11-26 03:54:44 +0000
@echo off        
:: BatchGotAdmin        
:-------------------------------------        
REM --> Check for permissions  
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"  
REM --> If error flag set, we do not have admin.  
if '%errorlevel%' NEQ '0' ( echo Requesting administrative privileges... goto UACPrompt) else ( goto gotAdmin )  
:UACPrompt  
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"  
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"  
    "%temp%\getadmin.vbs"  
    exit /B
:gotAdmin  
chkdsk

Dit werkt ookSOURCE: https://social.technet.microsoft.com/Forums/windows/en-US/bc8a4561-d97e-4339-9b1c-9b90e54a7f92/request-elevation-inside-cmdbatch-file ](https://social.technet.microsoft.com/Forums/windows/en-US/bc8a4561-d97e-4339-9b1c-9b90e54a7f92/request-elevation-inside-cmdbatch-file)

1
1
1
2014-07-28 14:33:06 +0000

Als alternatief kunt u een tweede batchbestand aanmaken, waarmee u als beheerder alles kunt uitvoeren, terwijl u het beheerderswachtwoord maar één keer hoeft in te voeren. Het wachtwoord wordt opgeslagen in een authenticatietoken, en vergt enige echte computerkennis om te kraken.

runas /savecred /user:(domain)\(admin user) "(file path to exe,bat,whatever)"
0
0
0
2015-11-25 07:07:27 +0000

Het is een voorbeeld om de knuppel te laten draaien als beheerder. Het werkt voor mij.

Het gaat als volgt:

if "%~s0"=="%~s1" ( cd %~sp1 & shift ) else (
  echo CreateObject^("Shell.Application"^).ShellExecute "%~s0","%~0 %*","","runas",1 >"%tmp%%~n0.vbs" & "%tmp%%~n0.vbs" & del /q "%tmp%%~n0.vbs" & goto :eof
)
:eof
start Cmd /k "netsh wlan show profile"
pause </

cls
Color 0A
@echo off
echo.
cls
set/p ProfileName=Type the name of the current Wifi signal? 
echo.
start Cmd /k "netsh wlan show profile name=%ProfileName% key=clear"
pause </
exit
pause
0
0
0
2015-11-11 09:50:46 +0000

U kunt een hulpprogramma voor de opdrachtregel gebruiken elevate . (downloadlink - https://drive.google.com/open?id=0Bz7qe_olclTwVGZLUklFMHNxQ00 )

Usage: Elevate [-?|-wait|-k] prog [args]
-? - Shows this help
-wait - Waits until prog terminates
-k - Starts the the %COMSPEC% environment variable value and
                executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog - The program to execute
args - Optional command line arguments to prog