我正在使用“runas”以其他用户身份打开命令提示符,但该命令提示符未以管理员身份运行。我怎样才能让它以管理员身份运行?
更新:我正在使用 Windows Server 2012
更新:我通过运行为另一个帐户打开了 cmd
runas /user:domain\username cmd.exe
然后我尝试在这个新提示中运行一些命令,但这不是作为提升的用户运行的(即使它具有管理员权限)。
我正在使用“runas”以其他用户身份打开命令提示符,但该命令提示符未以管理员身份运行。我怎样才能让它以管理员身份运行?
更新:我正在使用 Windows Server 2012
更新:我通过运行为另一个帐户打开了 cmd
runas /user:domain\username cmd.exe
然后我尝试在这个新提示中运行一些命令,但这不是作为提升的用户运行的(即使它具有管理员权限)。
见这里: https ://superuser.com/questions/42537/is-there-any-sudo-command-for-windows
根据该命令对于管理员来说如下所示:
runas /noprofile /user:Administrator cmd
开始-> shift + 命令提示右键单击将有助于以其他用户或管理员身份使用
不幸的是,所有这些答案都没有抓住重点。
这里有 2 个安全上下文的细微差别,我们需要它们重叠。- “以管理员身份运行” - 更改您在本地计算机上的执行级别 - “以不同用户身份运行” - 选择您在哪个用户凭据下运行进程。
当在工作站上启用 UAC 时,有一些进程拒绝运行,除非提升 - 仅仅成为本地“管理员”组的成员是不够的。如果您的要求还要求您对登录时使用备用凭据,我们需要一种方法来调用该过程作为备用凭据和提升。
我发现可以使用的,虽然有点麻烦,是:
使用 Sysinternals psexec 实用程序,如下所示:
psexec \\localworkstation -h -i -u 域\其他用户 exetorun.exe
需要第一次提升才能推送 psexec 服务。-h 运行提升的新“远程”(本地)进程,-i 让它与桌面交互。
也许有比这更简单的方法?
我找到了一种用一行代码来做到这一点的方法:
runas /user:DOMAIN\USER2 /savecred "powershell -c start-process -FilePath \"'C:\\PATH\\TO\\YOUR\\EXECUTABLE.EXE'\" -verb runAs"
这里有一些技巧。
1:我们告诉 CMD 只是以 DOMAIN\USER2 身份运行 Powershell
2:我们将“Start-Process”命令传递给 Powershell,使用动词“runAs”将 DOMAIN\USER2 提升到管理员/提升权限模式。
作为一般说明,“FilePath”参数中的转义字符必须存在(换句话说,“\ & \\”字符组合),并且单引号 (')必须围绕 EXE 路径 - 这样,CMD 解释FilePath 作为单个字符串,然后 Powershell 使用单引号将 FilePath 解释为单个参数。
使用“RunAs”动词在 Powershell 中提升:http://ss64.com/ps/syntax-elevate.html
您可以使用 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
Runas 不会神奇地以管理员身份运行命令,它会以您为其提供凭据的任何帐户运行它们。如果它不是管理员帐户,runas 不在乎。
在我的情况下,我已经以本地管理员身份登录,我需要以域管理员身份运行 CMD,所以对我有用的是从 powershell 窗口运行以下内容:
runas /noprofile /user:DOMAIN\USER "cmd"
打开记事本并粘贴以下代码:
@echo off
powershell -Command "Start-Process cmd -Verb RunAs -ArgumentList '/c %*'"
@echo on
然后,将文件另存为sudo.cmd
. 复制此文件并将其粘贴到您的 PATH 环境变量中C:\Windows\System32
或添加路径。sudo.cmd
当您打开命令提示符时,您现在可以运行类似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
是命令完成后关闭窗口的/k
cmd参数,是保持窗口打开的cmd参数。
最简单的方法是创建一个批处理文件 (.bat) 并以管理员身份运行。
右键单击并“以管理员身份运行”