60

I am using "runas" to open command prompt as a different user but that command prompt is not running as an admin. How can I make it run as an admin?

UPDATE: I am using Windows Server 2012

UPDATE: I opened cmd for another account by running

 runas /user:domain\username cmd.exe

Then I tried to run some commands in this new prompt but this is not running as an elevated user (even though it has Administrator privileges).

Mark
  • 883
  • 1
  • 8
  • 14

9 Answers9

69

See here: https://superuser.com/questions/42537/is-there-any-sudo-command-for-windows

According to that the command looks like this for admin:

 runas /noprofile /user:Administrator cmd
Community
  • 1
  • 1
Herms
  • 37,540
  • 12
  • 78
  • 101
  • 12
    Why does it require me to enter a password when I can right click any other program and run as admin without entering a password? Thanks – RayLoveless May 11 '16 at 15:54
  • 4
    because in this case you are running a program on behalf of another user as opposed to the case when you are already in the admin group and you run the program yourself but with elevated rights. – gaborhodi Jun 11 '20 at 19:43
17

Start -> shift + command Prompt right click will helps to use as another user or as Admin

Josh
  • 1,009
  • 2
  • 13
  • 25
16

All of these answers unfortunately miss the point.

There are 2 security context nuances here, and we need them to overlap. - "Run as administrator" - changing your execution level on your local machine - "Run as different user" - selects what user credentials you run the process under.

When UAC is enabled on a workstation, there are processes which refuse to run unless elevated - simply being a member of the local "Administrators" group isn't enough. If your requirement also dictates that you use alternate credentials to those you are signed in with, we need a method to invoke the process both as the alternate credentials AND elevated.

What I found can be used, though a bit of a hassle, is:

  • run a CMD prompt as administrator
  • use the Sysinternals psexec utility as follows:

    psexec \\localworkstation -h -i -u domain\otheruser exetorun.exe

The first elevation is needed to be able to push the psexec service. The -h runs the new "remote" (local) process elevated, and -i lets it interact with the desktop.

Perhaps there are easier ways than this?

Kevin
  • 350
  • 2
  • 9
14

I've found a way to do this with a single line:

runas /user:DOMAIN\USER2 /savecred "powershell -c start-process -FilePath \"'C:\\PATH\\TO\\YOUR\\EXECUTABLE.EXE'\" -verb runAs"

There are a few tricks going on here.

1: We are telling CMD just to run Powershell as DOMAIN\USER2

2: We are passing the "Start-Process" command to Powershell, using the verb "runAs" to elevate DOMAIN\USER2 to Administrator/Elevated privilege mode.

As a general note, the escape characters in the "FilePath" argument must be present (in other words, the "\ & \\ character combinations), and the single quotation (') must surround the EXE path - this way, CMD interprets the FilePath as a single string, then Powershell uses the single quotation to interpret the FilePath as a single argument.

Using the "RunAs" verb to elevate within Powershell: http://ss64.com/ps/syntax-elevate.html

Coruscate5
  • 2,253
  • 17
  • 28
3

You can use psexec.exe from Microsoft Sysinternals Suite https://learn.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite

Example:

c:\somedir\psexec.exe -u domain\user -p password cmd.exe
Ralf Stubner
  • 26,263
  • 3
  • 40
  • 75
Paweł M.
  • 41
  • 6
1

Runas doesn't magically run commands as an administrator, it runs them as whatever account you provide credentials for. If it's not an administrator account, runas doesn't care.

Wug
  • 12,956
  • 4
  • 34
  • 54
  • 1
    The account I am opening a command prompt in is an Administrator account. – Mark Oct 15 '12 at 20:47
  • One potential gotcha is that depending on how you invoke runas, you may inherit environment variables from the existing user session, so it's possible that things like `echo %USERNAME%` may not report that you're the other user. What are you trying to do with this admin prompt? – Wug Oct 15 '12 at 20:52
  • 1
    If you run your admin prompt and run the command `whoami` do you get the user you expect? – Wug Oct 15 '12 at 20:56
  • What are you trying to do with it that requires administrative rights that is not working? – Wug Oct 15 '12 at 20:58
  • 1
    I am trying to run an exe which requires admin privileges – Mark Oct 15 '12 at 20:59
  • 1
    What error message are you getting, specifically? – Wug Oct 15 '12 at 21:01
  • 1
    Administrator privileges not found. The account does have administrator privileges (grouped under "Administrators"). – Mark Oct 15 '12 at 21:04
1

In my case I was already logged in as a local administrator and I needed to run CMD as a domain admin so what worked for me was running the below from a powershell window:

runas /noprofile /user:DOMAIN\USER "cmd"

Ajay Raw
  • 11
  • 1
1

Open notepad and paste this code:

@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c %*'"
@echo on

Then, save the file as sudo.cmd. Copy this file and paste it at C:\Windows\System32 or add the path where sudo.cmd is to your PATH Environment Variable.

When you open command prompt, you can now run something like sudo start ..

If you want the terminal window to stay open when you run the command, change the code in notepad to this:

@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/k %*'"
@echo on

Explanation:

powershell -Command runs a powershell command.

Start-Process is a powershell command that starts a process, in this case, command prompt.

-Verb RunAs runs the command as admin.

-Argument-List runs the command with arguments.

Our arguments are '/c %*'. %* means all arguments, so if you did sudo foo bar, it would run in command prompt foo bar because the parameters are foo and bar, and %* returns foo bar.

The /c is a cmd parameter for closing the window after the command is finished, and the /k is a cmd parameter for keeping the window open.

CME1 Crewmember
  • 516
  • 5
  • 14
  • This does elevate (thanks to `-Verb RunAs`), but doesn't do the 'run as a different user' part... – Nickolay Jan 20 '20 at 17:02
  • 1
    This seems highly unreliable as it depends on the command prompt finding such text file, the subarguments to powershell remaining stable, escaping details, etc. – user182917 Jun 09 '21 at 13:39
-3

The easiest is to create a batch file (.bat) and run that as administrator.

Right click and 'Run as administrator'

nash.io
  • 3
  • 1