如何通过CMD/PowerShell实现域用户免输密码以管理员身份启动程序
域用户免输密码以管理员权限启动程序解决方案
你之前尝试的所有方案失效的核心原因是:runas、仅带-Credential参数的Start-Process都只做了身份切换,没有触发UAC权限提升,即使用管理员账号启动程序,拿到的也是标准用户权限,不是完整的管理员权限。以下是两种可直接落地的方案:
方案1:域组策略部署计划任务(域环境首选,安全性高)
该方案不需要终端留存管理员明文密码,支持批量部署,适配所有Windows版本:
- 第一步:创建计划任务
- 打开任务计划程序,新建任务,自定义任务名例如
启动Notepad++管理员版 - 常规选项卡勾选使用最高权限运行,安全选项设置为不管用户是否登录都要运行,保存时输入管理员账号密码完成授权
- 触发器选项卡不添加任何触发器
- 操作选项卡新建操作,操作类型选「启动程序」,程序或脚本路径填
C:\Program Files\Notepad++\notepad++.exe - 条件选项卡取消所有电源相关的限制勾选,设置选项卡取消停止运行超过以下时长的任务勾选,保存任务
- 打开任务计划程序,新建任务,自定义任务名例如
- 第二步:开放普通用户执行该任务的权限
打开CMD执行命令:schtasks /change /tn "启动Notepad++管理员版" /RU "BUILTIN\Users" - 第三步:创建用户快捷方式
新建快捷方式,目标位置填:schtasks /run /tn "启动Notepad++管理员版"
快捷方式图标可替换为Notepad++原生图标,用户点击后直接启动管理员权限的程序,无任何弹窗。 - 域环境下可通过组策略批量部署该计划任务和快捷方式,一次性覆盖所有域用户。
方案2:PowerShell组合权限脚本(小范围临时使用)
该方案实现简单,但管理员密码会明文保存在脚本中,安全性低,仅适合安全要求不高的小范围场景使用。
修改后的完整脚本如下,保存为.ps1格式文件:
# 域环境账号格式为 域名\管理员账号 格式 $adminUser = "admin" $adminPwd = ConvertTo-SecureString "你的管理员密码" -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential($adminUser, $adminPwd) Start-Process powershell -Credential $cred -ArgumentList "-Command Start-Process 'C:\Program Files\Notepad++\notepad++.exe' -Verb RunAs" -WindowStyle Hidden
给用户创建的快捷方式目标填:powershell -ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\存放路径\脚本名称.ps1"
注意事项
- 方案2的脚本需存放在普通用户无写入权限的路径,避免脚本被篡改或密码泄露
- 域生产环境必须使用方案1,管理员密码仅在创建计划任务时输入一次,终端用户完全接触不到密码,安全性有保障
内容的提问来源于stack exchange,提问作者tfc
相关产品推荐
相关产品推荐

