Windows Server 2016虚拟机以其他用户运行.bat/.exe提示"Access is denied"求助
检查本地安全策略的用户权限分配
打开secpol.msc,展开「本地策略」→「用户权限分配」,找到「以其他用户身份运行」策略,把需要执行操作的用户/组添加进去。哪怕文件权限拉满,这个系统级权限没开照样会被拒绝。临时调低UAC等级测试
打开control.exe /name Microsoft.UserAccounts,点「更改用户账户控制设置」,把滑块拉到「从不通知」(测试完可以调回去),再试一次操作。服务器版默认UAC等级高,可能拦截跨身份的运行请求。修复注册表的右键关联项
打开regedit,定位到以下两个路径:HKEY_CLASSES_ROOT\batfile\shell\runasuserHKEY_CLASSES_ROOT\exefile\shell\runasuser
检查子项command的默认值是否为:
batfile:%SystemRoot%\System32\runas.exe /user:"%userdomain%\%username%" "%1" %*
exefile:%SystemRoot%\System32\runas.exe /user:"%userdomain%\%username%" "%1" %*
要是路径缺了或者值不对,手动补上改对。检查组策略的限制设置
打开gpedit.msc,展开「计算机配置」→「管理模板」→「Windows组件」→「凭据用户界面」,找到「限制以其他用户身份运行」策略,确保它是「未配置」或「已禁用」。要是开了「已启用」,直接就会阻止跨身份运行。确认用户的交互式登录权限
回到secpol.msc的「用户权限分配」,检查「允许本地登录」和「允许通过远程桌面服务登录」,确保目标用户同时拥有这两个权限。虽然用户能RDP,但本地登录权限缺失可能影响跨身份会话的创建。
内容的提问来源于stack exchange,提问作者Itsarapong Intoum

