从cmd.exe或Windows运行命令之间的区别

时间:2014-04-09 13:19:39

标签: windows batch-file cmd

我实际上是尝试以另一个用户身份运行某个应用程序,虽然它在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"

1 个答案:

答案 0 :(得分:2)

runas的“问题”是

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

  • 它旨在调用.exe个文件(以及Windows有效的可执行文件)。

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

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

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

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