【发布时间】:2016-02-14 09:28:42
【问题描述】:
此语句失败。
runas /noprofile /env /savecred /user:"Eve" setx path "%path%;D:\Program Files (x86)\metapad36" /M
通过将notepad 加载到变量中,并将该变量传递给runas,与notepad 一起使用。
但是使用setx,我没有收到错误消息。控制台显示runas 的帮助文件。
感谢任何帮助。
谢谢!
更新:
这行得通:
>set myvar=notepad
>echo "%myvar%"
"notepad"
然后就可以了:
runas /noprofile /env /savecred /user:Adam "%myvar%"
这似乎有效。它扩展了“%path%”的值,这很好。一些 cmets 假设我需要传递给 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%"
更新2:
如果我在 /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) 如果可能,请始终使用批处理文件,这将使您免于逃避地狱。 2) 至于“未知的窗口闪烁” - 当您从 1) 中获得此批处理文件时,您可以将“cmd.exe /k mybatchfile.cmd”作为命令运行。 /k 开关将使新的 shell 窗口在批处理文件完成后停留在那里,因此您将真正看到那里发生了什么,并且能够找出问题所在。
-
感谢您的建议!但我并不害怕逃离地狱,只是想解决它,希望得到比我更了解的人的帮助。重新批处理文件,如果这里没有人真正知道我的问题的解决方案,那么我将尝试使用批处理文件进行故障排除。但希望这里有人能得到它。
-
@Wapac,我将此代码放在一个批处理文件中,然后执行它。仍然得到闪烁的屏幕和上面显示的相同的“尝试”输出。
-
嗨,只是在 ping 宇宙,这个话题仍未解决。如果有人可以提供一些建议,我很乐意进行试验。已经尝试将命令放入批处理文件中,但仍然没有乐趣。谢谢!