我正在尝试在无头嵌入式 Windows7 系统上远程安装图形驱动程序。我有几个系统需要维修;我可以上传安装程序脚本并以非特权用户身份在这些系统上执行它。但是,驱动程序安装需要提升的权限,因此我尝试创建一个将在特权帐户下运行的任务:
schtasks /Create /XML GraphicsUpdate.xml /ru <username> /rp <password> /tn GraphicsUpdate
<RunLevel>
当设置为时效果很好LeastPrivilege
,但返回
ERROR: Access is denied.
当尝试使用时HighestAvailable
。
尝试使用运行级别安装驱动程序LeastPrivilege
会导致错误“此操作需要交互式窗口站”,即 UAC 对话框;在无头系统上很难点击 UAC。
有没有办法允许非特权用户从命令行创建任务,并以最高可用权限从命令行以特权用户身份运行该任务?或者有没有更好的方法可以无头安装驱动程序?
更新
现场系统运行一个服务器,用户可以通过其 LAN(直接以太网连接或有线交换机)对其进行升级。我测试的子网完全相同(例如 172.20.81.0/24)。
我想创建一个包含驱动程序和安装脚本的包,但服务器以非特权帐户运行。我们需要找到一种解决方案来从此帐户升级权限,以便安装驱动程序。
答案1
我将把它添加为附加答案,因为另一个答案可能仍然可以帮助领域场景中的人们。
如果没有域或预先配置 UAC,您将无法执行此操作。(例如https://support.microsoft.com/en-us/kb/951016)
微软以安全为名,用尽一切办法阻止 UAC 提示之外的自我升级。由于环回保护,PSExec 在本地连接时无法工作,并且默认情况下,非域计算机上的管理共享会被远程阻止。(PSExec 依赖此机制)
在这种情况下,允许您执行任何操作的选项都需要在目标机器上预先设置某些内容,例如远程桌面或上述链接。
在域环境中,PSExec 不会被网络阻止,因为管理共享未被阻止。但在域环境之外,并且没有亲自设置任何东西,据我所知,这是不可能的。
答案2
尝试 Sysinternals 的 PsExec
https://technet.microsoft.com/en-us/sysinternals/pxexec.aspx
它可能可以用来做您想要做的事情,特别是只要您拥有正确的凭据,就可以从受限帐户以管理员权限执行进程。
然而,虽然可以这样使用,但我实际上建议使用它而不是计划任务来远程启动安装程序。这样您就不必在远程系统上保存密码。
您还可以使用它通过指定多台计算机的文本文件在多个系统上执行相同的任务。
此外,客户端计算机不需要安装任何特殊软件。只要确保您可以访问 $admin 共享即可。
答案3
我知道这是一篇老帖子,但也许这会对其他像我一样正在寻找同一问题解决方案的人有所帮助。
如果这是您环境中的一个选项,我发现将 RunTaskAsUser 切换到 SYSTEM 帐户允许导入任务,而且对我来说更重要的是,可以通过组策略推出任务。
从 CLI 导入完成且没有任何错误,新任务列在任务计划程序中。通过 GPO 推送具有相同的结果。
这是在保留“无论用户是否登录都运行”和“以最高权限运行”选项的情况下进行的。