Batch file: run command in a cmd.exe launched as a different user using batch file

Rishikant Verma picture Rishikant Verma · Feb 21, 2013 · Viewed 8.4k times · Source

Hi Folks I am a newbie to batch files and I am facing a challenge. I have to do following steps using a batch file automatically. Steps 1 and 3 I am able to figure out, however for step 2 i need your help:

A. Run command prompt using a user:

Comment: This I have figured out, I can do it using:


            @Echo Off               
            runas /profile /savecred /user:xyzasa\asdasq "cmd"

B. Make some registry changes using the command prompt which opened in the previous step

Comment: I know this can be done using the reg add command however when i am putting this command in the batch file it is not getting executed. Here is the current shape of my batch file:

            @echo off
            runas /profile /savecred /user:xyzasa\asdasq "cmd"
            reg add <Machine Name><Registry path and the changes to be made>

C. Launch a rdp file

Comment: This also I can do by simply mentioning the name of the rdp file as the last step.

            @echo off
            runas /profile /savecred /user:xyzasa\asdasq "cmd"
            reg add <Machine Name><Registry path and the changes to be made>
            asd.rdp

Question: How to make sure that after the cmd is launched as the result of the previous step the reg add command executes in the recently launched prompt?

Answer

ty733420 picture ty733420 · Feb 27, 2013

The way you have it, the runas command will launch a separate cmd.exe instance running as that user, that you can't interact with in any practical way from the original cmd.exe instance.

I recommend you create two scripts: one that contains only the "runas" command (say, "main.bat"), and another that contains everything you want done under that user account (say, "sub.bat"). Then do something like this in main.bat:

runas /profile /savecred /user:xyzasa\asdasq "cmd /c sub.bat"