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

Ist es möglich, eine Batch-Datei automatisch als Administrator auszuführen

Ich frage mich, ob es möglich ist, eine Batch-Datei automatisch als Administrator zu öffnen, wenn Sie auf die Batch-Datei doppelklicken, da die Befehle mit Administratorrechten ausgeführt werden müssen.

Hinweis: Ich kenne bereits die Lösung, auf die Datei mit der rechten Maustaste zu klicken und auf Run As Administrator zu klicken, aber dies ist keine automatische Lösung.

Antworten (9)

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

Ja, Sie können eine Batch-Datei mit Administratorrechten ausführen. Leider können Sie dies nicht direkt aus der Batch-Datei selbst heraus tun. Sie müssten zunächst eine Verknüpfung dieser Stapeldatei erstellen und die Eigenschaften dieser Verknüpfung ändern, damit dies funktioniert.

Um eine Verknüpfung zu erstellen, gibt es viele Möglichkeiten, aber die einfachste und schnellste ist die Verwendung der Option Senden an im Kontextmenü.

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

Natürlich können Sie die Verknüpfung an jeden beliebigen Ort senden. Um die Batch-Datei zur Ausführung als Admin zu erheben, folgen Sie den untenstehenden Schritten:

  1. Klicken Sie mit der rechten Maustaste auf die Verknüpfung, die Sie gerade erstellt haben (sollte sich auf dem Desktop befinden oder wohin auch immer Sie sie senden)
  2. Klicken Sie unter der Registerkarte Verknüpfung auf die Schaltfläche Erweitert…
  3. Aktivieren Sie das Kontrollkästchen Als Administrator ausführen und drücken Sie sowohl im modalen Fenster als auch im Haupteigenschaften-Fenster auf OK.
  4. Führen Sie die Verknüpfung durch Doppelklicken aus, und die Batch-Datei sollte als Administrator ausgeführt werden.
33
33
33
2014-12-15 16:55:24 +0000

Wie in eine Antwort von Ben Gripka auf eine andere Frage veröffentlicht:

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

unter Windows 7

  1. Erstellen Sie eine Verknüpfung zu dieser Stapeldatei

  2. Klicken Sie mit der rechten Maustaste auf die Verknüpfungsdatei

  3. Klicken Sie auf die Schaltfläche Voran, um ein Kontrollkästchen für die Ausführung als Administrator zu finden

Prüfen Sie den folgenden Screenshot

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

Die akzeptierte Antwort funktioniert in der Tat. Aber ich habe festgestellt, dass ich in Windows 7 jedes Mal, wenn die Verknüpfung angeklickt wurde, den UAC-Dialog ertragen musste. Diese IMHO lenkt erheblich vom “automatisch” in dieser Frage ab!

Dann stellte ich fest, dass in meiner eigenen Situation die fragliche Datei .bat vom Taskplaner ausgeführt werden soll. In diesem Fall wird das Problem durch das Aktivieren der Option Run with highest privileges auf der Registerkarte General der Aufgabe schön gelöst. Die .bat wird dann ohne Probleme als Administrator ausgeführt.

PS: Ich wusste nicht, dass ich bei dieser Antwort keine Bilder hochladen konnte, denn ich habe jetzt einen netten kleinen Screenshot dabei! Oder darf ich?

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

Вы можете использовать мой скрипт Batch_Admin для автоматического повышения Администратора для использования в любом типе пакетного собственного скрипта, или BAT или .CMD. Эта функция обеспечивает работу в стандартном окружении, со стандартными инструментами и таким же образом в разных системах Windows. Она использует несколько стандартных и встроенных команд Windows. Не используйте другие внешние скрипты. Она может быть использована для вызова любой программы в качестве администратора, а не только скриптов Batch. Достаточно создать небольшой сценарий, который затем вызывает программу, требующую разрешения Администратора. Поместите его в любую поисковую папку PATH (от %PATH%).

Чтобы использовать его, просто вставьте следующую строку (точно такую же) в его родительский Batch скрипт, который должен быть запущен от имени Администратора. Это лучше всего сделать в верхней части нашего родительского скрипта, и лучше всего, чтобы сначала, который будет вызван через CALL далее, некоторые подписки (см. подробное объяснение ниже).

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

Это может быть вставлено внутри любого дочернего скрипта, вызванного синтаксисом CALL. Для отображения сообщения, пока оно еще не имеет привилегий Администратора, например, в течение 5 секунд перед вызовом Batch_Admin установить переменную “ShowAdminInfo” на количество секунд

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

Так как это работает:

  • Вызов UAC. ShellExecute через VBScript, чтобы получить права пользователя

  • Пакетный запуск скрипта, или BAT или CMD

  • Звонящий скрипт может иметь длинные пробелы имен, включенные в вызов в кавычках

  • Верните все параметры вызова мастер скрипта, переданные из командной строки, как если бы не было передачи вызова и запустить что-то с нуля, также со специальными символами, например, восклицательными знаками (! ) и в процентах (%), а также скобками ()

  • Удерживает местоположение главного скрипта, если вызов произошел в директории, где этот скрипт является главным

  • Вспомогательное средство выводит сообщение, если перед собой установить переменную “ShowAdminInfo”, например, на 5 секунд, что может препятствовать немедленному прохождению прав Администратора, предоставляя дополнительную информацию и возможность принятия обоснованного решения. Примеры настройки, которые должны быть установлены: SET ShowAdminInfo=5 По умолчанию, так как эта переменная не определена, она не отображается.

  • Скрипт вызывает также в пути поиска системы % PATH% и с сетевого ресурса, например: \Computer\share\test.bat

  • Предотвращает недоразумения при написании необходимых вспомогательных файлов, когда скрипт почти одновременно вызывает несколько Batch_Admin. Он использует случайное число от 1 до 100

  • Но лучше всего использовать его на родительском скрипте. Переход на права администратора всегда требует, чтобы вы запустили скрипт полностью заново, в новом окне, в новом окружении, без обращения к переменным, заданным ранее в нашем скрипте и значения этих переменных не проходили затем для вызова от имени администратора. Просто скрипт будет снова выполнен.

Ниже приведен полный скрипт Batch_Admin. Расширенная информация об этом есть на моем сайте.

Скопируйте следующий текст в Блокнот и сохраните его на диск как: 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

Das funktioniert auchSOURCE: 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

Alternativ könnten Sie eine zweite Batch-Datei erstellen, die es Ihnen erlaubt, alles als Administrator auszuführen, wobei Sie das Administrator-Passwort nur einmal eingeben müssen. Das Passwort wird in einem Authentifizierungs-Token gespeichert und erfordert echtes Computer-Know-how, um es zu knacken.

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

Es ist ein Beispiel dafür, den Schläger als Administrator zu führen. Es funktioniert bei mir.

Es geht so:

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

Sie können ein Befehlszeilenprogramm elevate verwenden. (Link zum Herunterladen - https://drive.google.com/open?id=0Bz7qe\_olclTwVGGZLUklFMHNxQ00 )

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