Відповіді:
ShellExecuteExє функцією API, а не командою. Ви можете використовувати його, якщо розробляли додаток для запуску інших EXE з підвищеними привілеями.
Якщо ви хочете запустити будь-яку програму з підвищеними привілеями з командного рядка, створіть sudo.cmdфайл у будь-якому каталозі вашого PATH:
@echo Set objShell = CreateObject("Shell.Application") > %temp%\sudo.tmp.vbs
@echo args = Right("%*", (Len("%*") - Len("%1"))) >> %temp%\sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\sudo.tmp.vbs
@cscript %temp%\sudo.tmp.vbs
Потім введіть, наприклад, sudo notepad C:\example.txtщоб відкрити C:\example.txtпіднесений Блокнот. ( першоджерело )
Рішення в цій іншій відповіді не буде працювати, якщо командний рядок містить подвійні лапки та / або закінчується \", наприклад copy c:\foo.txt "c:\Program Files\". Змінена версія на зразок нижче виправляє це.
@echo off
set str=%*
set str=%str:\"="%
set str=%str:"=""%
@echo Set objShell = CreateObject("Shell.Application") > %temp%\sudo.tmp.vbs
@echo args = Right("%str%", (Len("%str%") - Len("%1"))) >> %temp%\sudo.tmp.vbs
@echo objShell.ShellExecute "%1", args, "", "runas" >> %temp%\sudo.tmp.vbs
@cscript %temp%\sudo.tmp.vbs