【问题标题】:Difference between running a command from cmd.exe or Windows Run从 cmd.exe 或 Windows Run 运行命令之间的区别
【发布时间】:2014-04-09 13:19:39
【问题描述】:

我实际上是在尝试以另一个用户身份运行应用程序,虽然它在 cmd.exe 提示符下运行得非常好,但如果我使用 Windows 运行提示符,它并不总是有效(它实际上取决于我使用的应用程序正在尝试运行)。

例如,这在 cmd.exe 或 W-Run 提示符下都可以正常工作(使用 Windows XP 或 Windows 7):

runas /user:ME regedit.exe

虽然这只适用于 cmd.exe 提示符(在这两种情况下它都会要求我输入密码,但如果在 WinXP 或 W7 上从 W-Run 启动它之后它就什么也不做):

runas /user:ME services.msc

这实际上有点不一致,使用 cmd 它总是可以工作,但使用 Windows Run,它确实不可靠且随机。

有什么想法有这样的区别吗?为了解决这个问题,我实际上使用批处理文件以另一个用户身份启动应用程序,然后只需在 Windows 运行提示符中键入批处理文件的完整路径。它确实确保了可靠性,但我仍然想知道我是否做错了什么。

cmd /k "runas /user:ME ""regedit.exe"" && exit"

【问题讨论】:

  • 您的第二个示例命令在我的机器上的命令提示符下工作。

标签: windows batch-file cmd


【解决方案1】:

runas 的“问题”是

  • 它需要所有命令作为一个参数,所以如果你正在运行带有参数的东西,你必须将所有命令括在引号中,如果命令包含它自己的引号,它们需要被转义。

  • 它被设计用来调用.exe 文件(嗯,windows 有效的可执行文件)。

这两个选项应该处理你的程序启动

runas /user:ME "cmd.exe /c \"start services.msc\""
runas /user:ME "mmc.exe %systemroot%\system32\services.msc"

在第一种情况下,它使用cmd.exe 的能力来查找合适的可执行文件来运行.msc 文件。第二种情况,直接调用adecuated可执行文件处理.msc文件。

对于您的批处理文件,您可以直接使用cmd /c ... 而不是cmd /k .... & exit,这将在命令完成时关闭控制台。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2021-01-27
    • 2019-07-19
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多