2016-02-14 5 views
1

Это утверждение не выполняется.Все еще не разрешено: SETX с RUNAS в Windows 10 Fails

runas /noprofile /env /savecred /user:"Eve" setx path "%path%;D:\Program Files (x86)\metapad36" /M

Работает с notepad, загрузив notepad в переменную, и передавая эту переменную в runas.

Но с setx, я не получаю сообщение об ошибке. На консоли отображается справочный файл для runas.

Цените любую помощь.

thx!

Update:

Это работает:

>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" ... 

Я разместил этот код в пакетном файле и выполнил его. По-прежнему появляется мигающий экран и тот же самый «попытка», показанный выше.

еще совсем запутался ...

+0

1) Если возможно, всегда используйте командные файлы, это спасет вас от ускользающего ада.2) что касается «неизвестных оконных вспышек» - когда у вас есть этот командный файл с 1), вы можете запустить команду «cmd.exe/k mybatchfile.cmd» в качестве команды. Переключатель/k заставит новое окно оболочки оставаться там после завершения командного файла, поэтому вы действительно увидите, что там происходит, и сможете узнать, что было не так. – Wapac

+0

THX за предложение! но я не боюсь сбежать от ада, просто хочу решить его, надеюсь, с помощью ppl, которые понимают лучше меня. Повторите пакетный файл, если никто здесь не знает решения моей проблемы, тогда я попробую пакетный файл для устранения неполадок. Но, надеюсь, кто-то здесь это получает. –

+0

@Wapac, я разместил этот код в пакетном файле и выполнил его. По-прежнему появляется мигающий экран и тот же самый «попытка», показанный выше. –

ответ

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

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

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

+0

escaping "с обратной косой чертой - см. Примеры справки runas:'> runas/env /user:[email protected] "notepad \" my file.txt \ "" '; также, что% path% вызовет проблему, поэтому командный файл лучше использовать там – Wapac

+0

@Wapac: Carets работал для ускорения кавычек в предыдущих версиях и по-прежнему работает в Windows 10. Я не знаю, было ли исключение обратного слэша введено в Windows 10 или Windows 8.1 или Windows 8, но определенно вплоть до Windows 7, необходимо было ухаживать за ними. –

+0

% можно также экранировать, если необходимо. –