在Windows 10上使用RUNAS设置SETX失败

时间:2016-02-14 09:28:43

标签: windows runas setx

此声明失败。

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

使用notepad,将notepad加载到变量中,并将该变量传递给runas

但是对于setx,我没有收到错误消息。控制台显示runas的帮助文件。

感谢任何帮助。

THX!

更新:

这有效:

>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 个答案:

答案 0 :(得分:0)

  1. 该命令需要是一个参数 - 可能用引号括起来。需要包含用于包围路径参数的附加引号。将此命令保存在.cmd批处理文件中,或使用反斜杠来转义引号。

    正如Wapac在评论中提到的,runas /?帮助文本特别推荐使用反斜杠转义。但是使用批处理文件可能更可取,因为它似乎无法逃脱百分号。

  2. 如果setx runas /noprofile,您如何期望:w完成任何事情?