如何以命令提示符的身份以其他用户和管理员身份运行程序

时间:2012-10-15 20:39:09

标签: command-prompt administrator

我正在使用“runas”以不同的用户身份打开命令提示符,但该命令提示符不是 以管理员身份运行。如何让它以管理员身份运行?

更新:我使用的是Windows Server 2012

更新:我通过运行

为另一个帐户打开了cmd
 runas /user:domain\username cmd.exe

然后我尝试在这个新提示中运行一些命令,但这不是作为提升用户运行的(即使它具有管理员权限)。

9 个答案:

答案 0 :(得分:52)

见这里: https://superuser.com/questions/42537/is-there-any-sudo-command-for-windows

根据该命令,admin的命令如下:

 runas /noprofile /user:Administrator cmd

答案 1 :(得分:16)

遗憾的是,所有这些答案都忽视了这一点。

这里有2个安全上下文细微差别,我们需要它们重叠。 - “以管理员身份运行” - 更改本地计算机上的执行级别 - “以不同用户身份运行” - 选择您运行该流程的用户凭据。

在工作站上启用UAC时,有些进程拒绝运行,除非提升 - 仅仅是本地“Administrators”组的成员是不够的。如果您的要求还要求您使用备用凭据登录,则我们需要一种方法来调用该进程作为备用凭据和提升。

我发现的东西虽然有点麻烦,但可以使用:

  • 以管理员身份运行CMD提示
  • 使用Sysinternals psexec实用程序,如下所示:

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

需要第一个提升才能推送psexec服务。 -h运行新的“远程”(本地)进程,并且-i允许它与桌面交互。

也许还有比这更简单的方法?

答案 2 :(得分:14)

开始 - > shift +命令提示右键单击将有助于用作另一个用户或管理员

答案 3 :(得分:7)

我已经找到了用一条线做到这一点的方法:

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

这里有一些技巧。

1 :我们告诉CMD只是将Powershell作为DOMAIN \ USER2运行

2 :我们正在通过" Start-Process"命令Powershell,使用动词" runAs"将DOMAIN \ USER2提升为管理员/提升权限模式。

作为一般说明," FilePath"中的转义字符。参数必须存在(换句话说," \& \\字符组合),单引号(')必须包围EXE路径 - 这样,CMD将FilePath解释为单个字符串,然后Powershell使用单引号将FilePath解释为单个参数。

使用" RunAs"动词在Powershell中提升http://ss64.com/ps/syntax-elevate.html

答案 4 :(得分:1)

Runas不会以管理员的身份神奇地运行命令,它会将它们作为您提供凭据的任何帐户运行。如果它不是管理员帐户,则runas不关心。

答案 5 :(得分:1)

您可以使用Microsoft Sysinternals Suite https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite

中的psexec.exe

示例:

c:\somedir\psexec.exe -u domain\user -p password cmd.exe

答案 6 :(得分:0)

就我而言,我已经以本地管理员身份登录,并且需要以域管理员身份运行CMD,因此对我有用的是从Powershell窗口中运行以下

runas / noprofile / user:DOMAIN \ USER“ cmd”

答案 7 :(得分:0)

打开记事本并粘贴以下代码:

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

然后,将文件另存为sudo.cmd。复制此文件并将其粘贴在C:\Windows\System32上,或将sudo.cmd所在的路径添加到PATH环境变量中。

打开命令提示符后,您现在可以运行类似sudo start .的内容。

如果您希望在运行命令时使终端窗口保持打开状态,请将记事本中的代码更改为此:

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

说明:

powershell -Command运行powershell命令。

Start-Process是启动过程的Powershell命令,在本例中为命令提示符。

-Verb RunAs以管理员身份运行命令。

-Argument-List运行带有参数的命令。

我们的论点是'/c %*'%*表示所有参数,因此,如果执行了sudo foo bar,它将在命令提示符foo bar中运行,因为参数是foo和bar,并且%*返回foo bar

/c是用于在命令完成后关闭窗口的cmd参数,而/k是用于使窗口保持打开状态的cmd参数。

答案 8 :(得分:-1)

最简单的方法是创建一个批处理文件(.bat)并以管理员身份运行它。

右键单击并以“以管理员身份运行”