Вопрос: Пакетный файл для запуска программ как admin - ошибка 740


Я работаю над небольшим пакетным скриптом, который поднимает основные программы окон, чтобы запускаться как администратор.

Все функции работают нормально, но я столкнулся с проблемой при попытке запустить «regedit.exe».

Если в сценарии выбран вариант 3, и он должен запустить regedit как admin, я получаю ошибку:

740: Запрошенная операция требует повышения.

Вот сценарий:

echo off
cls
echo.
echo Start as admin:
echo /----------------\
echo # 1. CMD         #
echo # 2. Task Manager#
echo # 3. Regedit     #
echo # 0. Exit        #
echo \----------------/
echo.

set /p run=

if %run%==1 (
set run="cmd"
)

if %run%==2 (
set run="taskmgr"
)

if %run%==3 (
set run="regedit"
)

if %run%==0 (
exit
)

runas /savecred /user:admin %run%

Есть ли обходной путь для этого?

Я хотел бы сделать это без установки сторонних программ, изменения реестра или отключения UAC.


2
2018-02-02 22:42


Источник




Ответы:


Вы можете отключить его, запустив новое приглашение CMD с помощью RunAs, которое вы укажете для запуска вашей команды.

Чтобы сделать это в вашей партии, измените последнюю строку на:

runas /savecred /user:admin "cmd /c %run%"


3
2018-02-03 05:13



PS: Отъезд choice /?, :) - Ƭᴇcʜιᴇ007
Работает как шарм. Спасибо Большое. - Divin3
У меня есть еще один вопрос. Поскольку я реализовал ваш метод, моя обработка ошибок не работает. Я имею в виду, что если команда не распознана, errorlevel больше не установлен 1 поскольку он запускается в другом окне. Есть ли способ как-то снова сделать это 1, если во входной строке есть опечатка? (я имею в виду, что это: не указаны номера выбора или действительная команда CMD) - Divin3


Add this to the top of your Batch file and at the end just put %run% instead of (runas /savecred /user:admin %run%)


@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"
:--------------------------------------

2
2018-02-03 06:23





возможно это может помочь или, возможно, начать всю партию, как может помочь администратор, путем создания другого пакетного скрипта, содержащего:

runas /user:admin C:\Path_to_your_batch_file\name.bat

1
2018-02-03 03:50



Причина, по которой я создал это, заключается в том, что пароль администратора так длинный, и я не хочу вводить его каждый раз, поэтому из-за '/ savecred' мне не нужно. Пытался создать еще одну летучую мышь и запустить ее из нее, она подскажет мне пароль и после того, как я его напечатаю, я получаю RUNAS ERROR: Unable to run - ...\regedit.bat  -2147467259: Unspecified error - Divin3


  1. Щелкните правой кнопкой мыши C: \ Windows \ regedit.exe и выберите «Свойства».
  2. В вкладке Совместимость выберите «Запустить эту программу в качестве администратора»,

0
2018-02-15 15:04



Этого я и хотел избежать. У нас есть 16-значный пароль администратора и каждый раз набирать его, даже на моем собственном компьютере, немного раздражает. Используя /savecred нужно будет только набрать его один раз и все. - Divin3