1

这个说法失败了。

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

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

我将此代码放在一个批处理文件中,然后执行它。仍然得到闪烁的屏幕和上面显示的相同的“尝试”输出。

还是很迷茫……

4

1 回答 1

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

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

  2. 如果你有 ,你怎么能期望setx完成任何事情?runas/noprofile

于 2016-02-14T09:49:25.813 回答