сильный текст script.bat, помещенный в папку sendTo (файл, настроенный для запуска с правами администратора из свойств -> расширенный -> запуск от имени администратора)

@echo off

cd %~dp1

echo %~dp1

echo "%~1"

pause

если я передаю параметры в этот файл правой кнопкой мыши -> sendto -> script.bat, например, файл superuser acc.txt, скрипт работает, но если я запускаю скрипт от имени администратора, окно windows cmd появляется на секунду и не работает.

Как я могу запустить этот скрипт от имени администратора? после этого фрагмента кода есть команда, требующая прав администратора.

edit # 1 Я думаю, что проблема связана с именем файла или пути с пробелом внутри, как "c:\path to space\" или "file with space.txt" и запуском скрипта от имени администратора.

2 ответа2

0

Создайте ярлык для вашего командного файла в папке shell:sendto и измените его свойства следующим образом:

  • щелкните правой кнопкой мыши -> «Свойства» -> вкладка « Shortcut »;
  • Цель -> cmd /C "D:\bat\SU\931003.bat" ;
  • Кнопка Advanced -> Запуск от имени администратора.

Обратите внимание, что первый echo "%CD%" в следующем фрагменте кода показывает начальный рабочий каталог вашего скрипта ("C:\Windows\system32" если запущен функцией SendTo ):

==>type D:\bat\SU\931003.bat
@echo off
echo initial working directory "%CD%"
pushd "%~dp1"
echo current working directory "%CD%"
echo paramer #1 supplied "%~1"
echo all paramers %*
net session
pause

пакетный ярлык в папке SendTo (для запуска от имени администратора)

Образец вывода

initial working directory "C:\Windows\system32"
current working directory "D:\bat\1 & 2"
paramer #1 supplied "D:\bat\1 & 2\931003 test.txt"
all paramers "D:\bat\1 & 2\931003 test.txt" "D:\bat\1 & 2\batchfile.bat"
There are no entries in the list.

Press any key to continue . . .

Выше вывод показывает:

  • работает с немного необычным путем и именем файла, содержащим не только пробелы, но даже символ & амперсанд ...
  • работает как администратор, в противном случае команда net session возвращает System error 5 has occurred и в Access is denied сообщения об ошибках.
0

Вы можете использовать команду runas следующим образом:

runas /user:username program

Вы также можете использовать что-то вроде elevate, утилиту повышения уровня командной строки UAC, специально для команды, требующей прав администратора:

elevate [(-c | -k) [-n] [-u]] [-w] command

Options:
  -c  Launches a terminating command processor; equivalent to "cmd /c command".
  -k  Launches a persistent command processor; equivalent to "cmd /k command".
  -n  When using -c or -k, do not pushd the current directory before execution.
  -u  When using -c or -k, use Unicode; equivalent to "cmd /u".
  -w  Waits for termination; equivalent to "start /wait command".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .