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