SETX с RUNAS в Windows 10 не работает
Это утверждение не выполняется.
runas /noprofile /env /savecred /user:"Eve" setx path "%path%;D:\Program Files (x86)\metapad36" /M
Работает с notepad
, загрузив notepad
в переменную, и передавая эту переменную runas
,
Но с setx
Я не получаю сообщение об ошибке. Консоль отображает файл справки для runas
,
Ценю любую помощь.
Спасибо!
Обновить:
Это работает:
>set myvar=notepad
>echo "%myvar%"
"notepad"
И тогда это работает:
runas /noprofile /env /savecred /user:Adam "%myvar%"
Это похоже на работу. Это расширяет значение "%path%", что нормально. В некоторых комментариях предполагается, что мне нужны исходные переменные% в команде, которую я передаю runas, но это нормально, если расширить до их действительного значения:
>set myvar=setx path "%path%;D:\Program Files (x86)\metapad36" /M
>echo "%myvar%"
"setx path "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;;D:\Program Files (x86)\metapad36" /M"
Но тогда это терпит неудачу:
>runas /noprofile /env /savecred /user:Adam "%myvar%"
Update2:
Если я запускаю это с несуществующим именем пользователя в /user
Параметр, меня спрашивают их пароль. Но если я запускаю его с настоящим именем пользователя-администратора (в командной строке без прав администратора), меня НЕ спрашивают о пароле. Вместо этого неизвестное окно мигает и исчезает, и системный путь НЕ изменяется.
>runas /noprofile /env /savecred /user:"Eve" "setx path \"%path%;D:\Program Files (x86)\metapad36\" /M"
Attempting to start setx path "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;;D:\Program Files (x86)\metapad36" /M as user "DESKTOP-AB0HSLD\Eve" ...
Enter the password for Eve:
>runas /noprofile /env /savecred /user:"Adam" "setx path \"%path%;D:\Program Files (x86)\metapad36\" /M"
Attempting to start setx path "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;;D:\Program Files (x86)\metapad36" /M as user "DESKTOP-AB0HSLD\Adam" ...
я поместил этот код в командный файл и выполнил его. Все еще появляется мигающий экран и та же "попытка" вывода, показанная выше.
все еще в замешательстве...
1 ответ
У команды должен быть один аргумент - возможно, заключенный в кавычки. Дополнительные кавычки, используемые для окружения аргумента пути, должны быть заключены. Либо сохраните эту команду в
.cmd
пакетный файл, или используйте обратную косую черту, чтобы экранировать кавычки.Как упомянул Wapac в комментариях, обратная косая черта специально рекомендована
runas /?
текст справки. Но использование пакетного файла, вероятно, предпочтительнее, потому что кажется невозможным избежать знаков процента.Как вы можете ожидать
setx
достичь чего-либо, если выrunas
с/noprofile
?