从开始菜单(通过 Shift + 右键单击应用程序)以不同的用户身份(例如域管理员帐户)运行应用程序曾经是 Windows 7 和 XP 中的一个选项。
但是,我在 Windows 10 中找不到该选项。解决方法似乎是 1) 在 Windows 资源管理器中找到该应用程序(shift + 右键单击)或 2) 从命令行使用 runas.exe。
但是,为了使用这些解决方法,我必须先查找可执行文件的名称。这有点困难,因为我没有记住每个 RSAT 工具的名称或可执行文件的名称。
(例如“Active Directory 用户和计算机”是 dsa.msc,“路由和远程访问”是 rrasmgmt.msc)
有没有更简单的方法可以做到这一点?
答案1
- 按 Windows + R 组合键打开注册表编辑器,输入
regedit
并按 Enter。如果 UAC 提示,请单击“是”继续。 - 转到
HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer
- 如果找不到此项,则右键单击并在 Windows 下添加 Explorer 项并添加 DWORD 值ShowRunasDifferentuserinStart
- 在右侧窗格中,右键单击
ShowRunasDifferentuserinStart
键,然后单击“修改”。 - 在数值数据框中输入
1
值 - 单击“确定”保存设置。
- 关闭注册表编辑器。重新启动系统。
重新启动后,您应该有“以不同用户身份运行选项”,有时位于“更多”下拉菜单下。
我已经在多个加入域和未加入域的 PC 上完成了此操作,效果非常好。
答案2
答案3
答案4
只要辅助登录服务 ( seclogon
) 正在运行,以下代码块就允许批处理文件和 VBScript 文件的组合来自动执行任务。批处理文件使用相对路径引用,允许将文件放置在允许当前和选定用户帐户至少具有读取权限的任何路径中。两个文件应位于同一路径内。将 和ShellExecute
动词 一起使用runasuser
会导致 Windows 弹出提示,允许用户从主机允许的任何登录方法中进行选择。
可以将此过程添加到用户启动过程中,以便一旦登录计算机系统就会发生。
批处理文件:{RunAsUser}{CMD}.cmd
@Echo Off
If "%~1" NEQ "/CALLBACK" Goto :label_Process_Run_As_User
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
REM Start the process once running as designated user
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
cd C:\
start "" %~dp0cmd.lnk
Goto :EOF
:label_Process_Run_As_User
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
REM Section below verifies if Secondary Login is available
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
REM Query [Secondary Logon]
sc query seclogon 1> nul 2> nul || (
Goto :label_Missing_Secondary_Login
)
REM Check to see if [Secondary Logon] service is not disabled
sc qc seclogon | Find /i "START_TYPE" | Find /i "DISABLED" 1> nul 2> nul && (
Set flg.SecLog.Enabled=F
) || (
Set flg.SecLog.Enabled=T
)
REM Check to see if [Secondary Logon] service is Running
sc queryex seclogon | Find /i "STATE" | Find /i "RUNNING" 1> nul 2> nul && (
Set flg.SecLog.Running=T
) || (
Set flg.SecLog.Running=F
)
REM Determine if action should work
If /i "%flg.SecLog.Enabled%:%flg.SecLog.Running%" EQU "F:F" Goto :label_Secondary_Login_Unavailable
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
REM Section below starts the RunAsUser process
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
REM System configuration was validateed and RunAsUser will commence
Set "str.SELF=%~0"
WSCRIPT /E:VBSCRIPT "%~dp0RunAsUser.txt"
Goto :EOF
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
REM Section below provides written notices to user for error conditions
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:label_Secondary_Login_Unavailable
Echo.
Echo Unable to utilize the Secondary Logon system service because it is disabled.
Echo.
pause
Goto :EOF
:label_Missing_Secondary_Login
Echo.
Echo Unable to find the Secondary Logon system service
Echo.
pause
Goto :EOF
VBScript 文件:RunAsUser.txt
'-------------------------------------------
'
' Launch Process RunAsUser
CreateObject("Shell.Application").ShellExecute CreateObject("WScript.Shell").Environment("PROCESS")("str.SELF"), "/CALLBACK", "", "runasuser", 1
'
' Display a message box to pause script
msgbox "Enter username or select Certificate for account" & vbCrLf & "On the windows dialog that will popup." & vbCrLf & vbCrLf & "Click OK once process opens", vbokonly
'
' Quit the script
On Error Resume Next
Window.Close ' HTA Must be Closed Through the Window Object
Err.Clear
Wscript.Quit ' VBS Must be Closed Through the Wscript Object
Err.Clear
On Error Goto 0
'
' ----------------------------------------------------------------------