dan
dan

Reputation: 3519

Difference between running a command from cmd.exe or Windows Run

I'm actually trying to run an application as another user and while it works really nicely in a cmd.exe prompt, it doesn't always work if I go with the Windows Run prompt (it actually depends on what application I'm trying to run).

For example, this works fine both from cmd.exe or from W-Run prompt (using either Windows XP or Windows 7):

runas /user:ME regedit.exe

While this only works in a cmd.exe prompt (it does ask for my password in both cases but it does nothing after that if launched from W-Run on either WinXP or W7):

runas /user:ME services.msc

It's actually kind of inconsistent, with cmd it always works but with Windows Run, it's really unreliable and random.

Any ideas where there is such a difference? To get around the problem, I'm actually using batch files to launch applications as another user and then just type the batch file full path in Windows Run prompt. It does ensure reliability but I still would like to know if I'm doing something wrong.

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

Upvotes: 2

Views: 4124

Answers (1)

MC ND
MC ND

Reputation: 70923

The "problem" with runas are

  • It needs all the command as only one argument, so if you are running something with arguments you have to enclose all the command in quotes, and if the command includes its own quotes, they need to be escaped.

  • It is designed to call .exe files (well, windows valid executable files).

This two options should handle your program start

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

In the first case, it is using the ability of cmd.exe to find the adecuated executable to run the .msc file. In the second case, it directly calls the adecuated executable to handle the .msc file.

For your batch files, instead of cmd /k .... & exit, you can directly use cmd /c ... that will close the console when the command finishes.

Upvotes: 3

Related Questions