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 ответ

  1. У команды должен быть один аргумент - возможно, заключенный в кавычки. Дополнительные кавычки, используемые для окружения аргумента пути, должны быть заключены. Либо сохраните эту команду в .cmd пакетный файл, или используйте обратную косую черту, чтобы экранировать кавычки.

    Как упомянул Wapac в комментариях, обратная косая черта специально рекомендована runas /? текст справки. Но использование пакетного файла, вероятно, предпочтительнее, потому что кажется невозможным избежать знаков процента.

  2. Как вы можете ожидать setx достичь чего-либо, если вы runas с /noprofile?

Другие вопросы по тегам