使用脚本在锁定的电脑上显示开关

问题描述 投票:0回答:2

我的电脑上连接了2台显示器(一台是电视),运行着Windows 7,我想用一个脚本在它们之间切换。我知道 "displaywitch.exe "及其参数(如克隆、内部等)。然而,我需要脚本在电脑锁定时工作。

当系统锁定时,按Windows+P可以正常工作,这也会调用displaywitch。然而,在电脑被锁定时,使用 "displaywitch.exe clone "运行批处理脚本无法工作。

要执行该脚本,我想使用 远程启动应用程序 在我的手机上。远程启动器在我的电脑被锁定时,用脚本关机就能正常工作,所以一般来说,它能够在锁定的机器上执行脚本。

有没有其他的方法,可以在系统锁定的情况下在我的显示器之间切换?

windows batch-file batch-processing remote-access
2个回答
0
投票

试试这个。

  • 在你的windows调度程序中创建一个任务 执行所需的命令(linke "displaywitch. exe clone")
  • 设置一个有权限执行此命令的用户,并将密码保存在你的新工作中。
  • 不要设置作业的触发器,而是启用手动启动的选项。
  • 使用 schtasks /Run /S system /U username /P password /TN taskname 以触发工作

只要你的windows正在运行并有网络连接,无论你的windows处于哪种状态,都应该执行所需的命令。


0
投票

这不是一个简单的任务。

displayswitch内部要做的是调用 SetDisplayConfig 这个函数必须从一个生活在交互式控制台的进程中调用,否则将返回ERROR_ACCESS_DENIED。

有人可能会认为,他可以使用-i选项从psexec中调用displaywitch,并指明当前活动的用户会话;通常是powershell

(ps winlogon).si

返回所有交互式用户会话,但从psexec启动时,displaywitch.exe无论如何都不工作。

我想这是因为在任何情况下,命令行程序都不需要 "图形 "基础结构来运行,也许在psexec中发生了一些内部优化,以保存创建一个合适的图形环境(至少在我的机器上它不工作,我也没有使用-x选项的运气。

你可以做的是写一个非常简单的windows窗体程序,它甚至不需要创建实际的窗体,它可以简单地调用 SetDisplayConfig 而死亡。但作为一个windows窗体应用程序,却神奇地做到了这一点。

这样你可以创建一个脚本,找到当前活动的交互式控制台id,然后像这样使用psexec(假设1是交互式会话的id)。

psexec -accepteula -nobanner -i 1  C:\path-to-your-exe\your-exe.exe 

我在我的配置文件中加载了一个powershell模块,我可以通过ssh或任何远程连接调用它,即使我的会话被锁定,或者即使没有用户会话登录,它也能切换我的显示。

显然,运行脚本的用户必须拥有运行 psexec -i 所需的授权(我的是机器管理员,所以它可以工作,但我不知道到底需要哪种授权,你可以创建一个功能性的机器管理员,然后通过-u -p 参数调用 psexec。

© www.soinside.com 2019 - 2024. All rights reserved.