如何在Windows 10中以其他用户身份运行程序(RunAs)?
在所有受支持的Windows版本中,可以在当前会话中代表另一个用户运行应用程序(运行方式)。这使我们可以运行具有其他用户(通常是提升权限)权限的脚本(.bat,.cmd,.vbs,.ps1),可执行文件(.exe)或者应用程序安装(.msi,.cab)。
例如,我们可以使用RunAs在非特权用户会话中以管理员帐户安装应用程序或者运行MMC管理单元。当在另一个用户下配置应用程序(并将其设置存储在当前用户无法访问的另一个用户配置文件中)时,以另一个用户身份运行程序的机会可能会很有用,但是必须在另一个用户中使用相同的设置启动用户会话。
在Windows 10中,有几种方法可以代表另一个用户运行程序/进程。
"二次登录服务"(seclogon)负责在Windows中以不同用户身份运行程序。如果该服务停止,则所有描述的RunAs方法将无法工作。我们可以使用以下PowerShell命令检查该服务是否已启动:
Get-Service seclogon
如何从文件资源管理器以其他用户身份运行应用程序?
代表另一个用户运行应用程序的最简单方法是使用Windows File Explorer GUI。只需找到要启动的应用程序(或者快捷方式),然后按Shift键并在其上单击鼠标右键。在上下文菜单中选择"以其他用户身份运行"。
在下一个窗口中,指定要在其帐户下运行该应用程序的用户的名称和密码,然后单击"确定"。
注意如果需要指定域用户,则使用以下名称格式之一:
UserName@DomainName
或者
DomainName\UserName
。
重要。如果该帐户具有密码,则可以代表其他用户运行该程序。为密码为空的用户使用RunAs无效。
打开任务管理器,并确保该应用程序正在指定的用户帐户下运行。
Windows 10中缺少以其他用户身份运行选项
如果"文件资源管理器"上下文菜单中没有"以其他用户身份运行"选项,请打开"本地组策略编辑器"(
gpedit.msc
),并确保在"计算机配置->管理模板-> Windows组件->凭据用户界面"中禁用了(或者未配置)"需要用于凭据输入的可信路径"策略。
使用RunAs命令以CMD身份以另一个用户身份运行程序
我们可以使用Windows内置的cli工具runas.exe
,以其他用户的身份从命令提示符处运行应用程序。这
runas
命令还可以让我们将用户密码保存到Windows凭据管理器,这样我们不必每次都输入密码。
打开命令提示符(或者通过按" Win + R"打开"运行"窗口)。要以管理员帐户启动Notepad.exe,请运行以下命令:
runas /user:admin "C:\Windows\notepad.exe"
如果用户名包含空格,请用引号引起来:
runas /user:"antony jr" notepad.exe
在下一个窗口中,出现提示输入admin的密码,我们必须其中输入用户密码,然后按Enter。
应用程序应该打开。就我而言,这是cmd.exe。窗口标题显示以PCName\username运行:
例如,我们可以在其他用户下打开控制面板:
runas /user:admin control
如果需要在域用户下运行程序,请使用以下名称格式:
UserName@DomainName
或者
DomainName\UserName
。例如,要代表域用户使用记事本打开文本文件,请使用以下命令:
runas /user:corp\server_admin "C:\Windows\system32\notepad.exe C:\ps\region.txt"
Enter the password for corp\server_admin: Attempting to start C:\Windows\system32\notepad.exe C:\ps\region.txt as user "corp\server_admin " ...
有时,我们需要从未加入AD域的计算机上以域用户身份运行程序。在这种情况下,我们需要使用以下命令(假定我们计算机网络设置中指定的DNS服务器可以解析此域名):
runas /netonly /user:contoso\bmorgan cmd.exe
如果我们不想在以其他用户身份启动程序时加载用户配置文件,请使用/ noprofile
参数。这样可以使应用程序启动更快,但可能会导致在用户配置文件中存储应用程序数据的程序无法正常运行。
如何在没有密码提示的情况下使用RunAs?
我们可以保存输入的用户凭据(带有密码)。这
/savecred
参数用于此目的。
runas /user:admin /savecred “C:\Windows\cmd.exe”
指定密码后,它将被保存到" Windows凭据管理器"中。
下次我们使用同一用户在同一用户下运行runas命令时
/savecred
密钥,Windows将自动使用凭据管理器中保存的密码,而无需提示再次输入。
要在凭据管理器中显示已保存凭据的列表,请使用以下命令:
rundll32.exe keymgr.dll, KRShowKeyMgr
但是,使用
/savecred
参数不安全。因为用户将其保存其中的配置文件中,所以可以使用它们以这些特权运行" any"命令,甚至更改另一个用户密码。另外,窃取凭据管理器中保存的密码很容易,因此建议我们防止Windows保存密码(并且永远不要保存特权管理员帐户的密码)。
注意此外,/ savecred在Windows Home Edition中不起作用。
如何创建快捷方式以其他用户身份运行?
我们可以在桌面上创建一个快捷方式,该快捷方式允许我们以其他用户身份运行该程序。只需创建一个新的快捷方式,然后指定
runas
在"位置"字段中具有必要参数的命令
当我们运行这样的快捷方式时,将提示我们输入用户密码。
如果我们另外指定
/savecred
中的参数
runas
快捷方式,则仅会提示一次密码。该密码将保存在Credential Manager中,并且在我们运行快捷方式时自动使用,而无需提示输入密码。
此类快捷方式通常用于运行需要提升权限才能运行的程序。但是,有更安全的方法可以在没有管理员特权的情况下运行程序,或者为特定应用程序禁用UAC提示。
如何以其他用户身份运行MMC管理单元?
在某些情况下,我们必须以其他用户身份运行Windows管理管理单元之一。例如,我们可以使用以下命令以其他用户身份运行Active Directory用户和计算机(ADUC)RSAT管理单元:
runas.exe /user:DOMAIN\USER "cmd /c start \"\" mmc %SystemRoot%\system32\dsa.msc"
同样,我们可以运行任何其他管理单元(如果知道其名称)。
在Windows 10中将运行方式
选项添加到开始
菜单
默认情况下,Windows 10开始菜单项中没有运行方式选项。要添加上下文菜单"以其他用户身份运行",请在"本地组策略编辑器"(gpedit.msc)的"用户配置->管理模板->开始菜单和任务栏"部分的"开始"策略上启用"显示以不同用户身份运行"命令。 。
或者,如果缺少gpedit.msc,则在注册表项" HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer"中创建名称为" ShowRunasDifferentuserinStart"和值为1的新DWORD参数。我们可以使用以下PowerShell命令添加reg参数:
New-ItemProperty -Path "HKCU:\Software\Policies\Microsoft\Windows\CurrentVersion\Explorer" -Name ShowRunasDifferentuserinStart -Value 1 -PropertyType DWORD -Force
更新组策略设置(
gpupdate /force
),并确保在"开始"菜单中为程序显示了新的上下文菜单"更多->以其他用户身份运行"。