48

Within Windows Explorer, I can right click on an executable file and pick 'Run as administrator' which will launch the selected process with elevated privileges or I can shift-right click on the executable file and click 'Run as different user', specify the username and password which will launch the process with standard privileges using the specified user context.

How do I run as a different user AND run in an elevated context? A perfect example of this would be opening an elevated command prompt using a different user context that the currently logged in user.

codechurn
  • 1,667

8 Answers8

28

I don't think such an option exists.

As a work around you could start the command line as an admin and execute the following command to run the command line with admin privileges as the other user.

runas /netonly /user:YourUser cmd.exe

Yass
  • 3,677
21

You can do it through PowerShell:

Start-Process powershell -Credential domain\differentUserName -ArgumentList '-noprofile -command &{Start-Process "TheApp.exe" -verb runas}'
18

Yes, psexec absolutely does this.

The following example works cleanly on Windows 8.1; run the command prompt as Administrator, then:

// -i makes the app interactive
// -h elevates the execution context 
// Omitting the password forces a secure prompt
psexec -u DOMAIN\user -i -h "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"
9

I notice this is a very old question, but the given answers are not ideal and it's already been necroed. All the existing answers require typing archaic commands and knowing the exact path to your executable. An ideal option would make this possible using the same process you already use for privilege escalation.

If you have a non-Home edition of Windows (Vista thru 10) you can use the Security Policy Manager to make it prompt you to give your password whenever elevation occurs. It also gives you the option to select a completely different user and enter their password... which will cause the elevated process to run as them.

Simply open the start menu and type secpol.msc and hit enter to launch it (if it's available). You're looking for Local Policies > Security Options > User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode > Prompt for credentials. Vista has a similar option that doesn't mention "Admin Approval Mode" but it does the same thing.

I think this is a much more natural option than the other's offered here and is rather reminiscent of gksudo on *nix. But if your edition of Windows doesn't include secpol.msc you will have to do some registry hackery to enable it.

4

Here's how I perform this on Windows 10 nowadays:

  • Open C:\Windows\System32 in File Explorer.

  • Hold Shift and Right Click Taskmgr.exe, select Run As Different User.

  • In Task Manager, Click File -> Create New Task

  • Check the box to Create this task with administrative privileges.

From here, I run cmd.exe or powershell.exe if I need to use a scripting language or run a script.

Note, your current user's environment variables will not be loaded in this session, so be sure to set any variables you may need like a PATH variable.

Pandashire
  • 41
  • 2
1

I found that if I log on as the Run As account you can set the "run this program as administrator" flag on the properties / compatibility page. Then log on the secondary account and perform the shift click run as will open it as administrator.

1

Based on the contribution from @Darío León - but including more secure fully qualified paths, and the Windows 'Run as a different user' dialog.

The underlying principles are as follows:

  • Run Windows PowerShell hidden, then using Start-Process -Verb RunAsUser, start another Windows PowerShell session as a different user, then sleep for 2 minutes (the default UAC timeout - if left out, the 'Run as a different user' dialog closes immediately)
  • Within the second PowerShell session, using Start-Process -Verb RunAs, run the final application elevated

This seems to do the job for me, even when the new Windows 11 'Windows Terminal' is taking over from Windows PowerShell.

Hope this helps others out:

Run Command Prompt as elevated different user

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -WindowStyle Hidden -Command Start-Process -Verb RunAsUser $PSHOME\powershell.exe '-NoProfile -Command Start-Process -Verb RunAs \\\"%ComSpec%\\\"'; Start-Sleep 120

Run Windows PowerShell as elevated different user

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -WindowStyle Hidden -Command Start-Process -Verb RunAsUser $PSHOME\powershell.exe '-NoProfile -Command Start-Process -Verb RunAs \\\"$PSHOME\powershell.exe\\\"'; Start-Sleep 120

Run Windows PowerShell ISE as elevated different user

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -WindowStyle Hidden -Command Start-Process -Verb RunAsUser $PSHOME\powershell.exe '-NoProfile -Command Start-Process -Verb RunAs \\\"$PSHOME\powershell_ise.exe\\\"'; Start-Sleep 120

Run VS Code as elevated different user

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w h -c Start-Process -Verb RunAsUser $PSHOME\powershell.exe '-nop -c Start-Process -Verb RunAs \\\"%ProgramFiles%\Microsoft VS Code\Code.exe\\\"'; Start-Sleep 120

The final command is shortened using the Powershell.exe command line shortcuts (-nop -w h -c) to keep it within the MAX_PATH limit (260 characters).

Minkus
  • 432
0

runas /user: /savecred "Full path of file" Password will be saved in credentials manager, and won't prompt again.

Leave out /savecred and it will prompt.