此声明失败。
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" ...
我将此代码放在批处理文件中,然后执行它。仍然有闪烁的屏幕和上面显示的相同的“尝试”输出。
仍然很困惑......
答案 0 :(得分:0)
该命令需要是一个参数 - 可能用引号括起来。需要包含用于包围路径参数的附加引号。将此命令保存在.cmd
批处理文件中,或使用反斜杠来转义引号。
正如Wapac在评论中提到的,runas /?
帮助文本特别推荐使用反斜杠转义。但是使用批处理文件可能更可取,因为它似乎无法逃脱百分号。
如果setx
runas
/noprofile
,您如何期望:w
完成任何事情?