Сценарий, который я использую, отсюда: { ссылка }
У меня есть пакетный файл, созданный для установки Office 365 с помощью их установщика, запускаемого нажатием кнопки. Сначала он проверит, существует ли каталог, содержащий конфигурации XML и setup.exe. Как только это будет подтверждено, он начнет работать. Elevate.cmd - Версия 4. Единственные сделанные мной модификации - это удаление следующих строк:
ECHO.
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation
ECHO **************************************
CLS
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================
REM Run shell as admin (example) - put here code as you like
ECHO %batchName% Arguments: P1=%1 P2=%2 P3=%3 P4=%4 P5=%5 P6=%6 P7=%7 P8=%8 P9=%9
cmd /k
Мой код должен запускаться после этих линии:
::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
Всякий раз, когда я запускаю командный файл, я получаю приглашение UA C. После того, как я принимаю приглашение, оно закрывается. Чтобы подтвердить, что мой код не выполняется, я добавил @echo HELLO! > hello.txt
прямо перед call setup.exe %config%
, но не смог найти файл в каталоге. Это было не в C:\Windows\System32
.
Вот мой командный файл, Install.bat
:
@echo off
set directory="<PATH EXCLUDED FOR PRIVACY. ALSO ON A NETWORK DRIVE.>"
if not exist %directory% goto :install_not_found
::::::::::::::::::::::::::::::::::::::::::::
:: Elevate.cmd - Version 4
:: Automatically check & get admin rights
:: see "https://stackoverflow.com/a/12264592/1016343" for description
::::::::::::::::::::::::::::::::::::::::::::
@echo off
:init
setlocal DisableDelayedExpansion
set cmdInvoke=1
set winSysFolder=System32
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
if '%cmdInvoke%'=='1' goto InvokeCmd
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
goto ExecElevation
:InvokeCmd
ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%"
:ExecElevation
"%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %*
exit /B
:gotPrivileges
setlocal & cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1)
::::::::::::::::::::::::::::
::START
::::::::::::::::::::::::::::
:: https://www.computerhope.com/forum/index.php?topic=75310.0
:choice
@echo Enter the number for which install you would like:
@echo [1] Office 32-Bit
@echo [c] Cancel
goto :listen
:listen
set /P c=^>
if /I "%c%" EQU "1" (
set config="/configure office_32.xml"
goto: install
)
if /I "%c%" EQU "C" goto :cancel
if /I "%c%" EQU "c" goto :cancel
@echo Invalid entry
goto :listen
:install_not_found
@echo Error: The installation folder could not be found.
goto :cancel
:cancel
@echo Cancelling Installation...
goto :eof
:install
pushd %directory%
elevate
@echo on
call setup.exe %config%
@echo off
popd
@pause