我有一个使用Windows Server 2012上的任务计划程序在系统启动时启动的程序 。 即使计算机自动重启,程序也必须启动。
pipe理员是用于启动该程序的帐户,选项“运行是否用户已login”为任务进行检查。
这个问题是,当有人最终使用远程桌面连接以pipe理员身份login时,界面(程序窗口)被隐藏。
据我所知,有没有办法解决这个使用任务计划。
我该如何解决这个问题?
这应该是一个相当普遍的问题,但我找不到任何searchnetworking。 我很惊讶微软在调度程序中允许有这样的限制。 我可以创build一个VBScript或启动时运行的东西,并启动程序,当用户真正login时,这些程序将会显示出来吗?
其他想法?
(我不想一个独立的GUI程序连接到原来的程序,我也更喜欢它,如果我不必在用户login时终止已经运行的程序,然后启动它再次。)
想出了如何自己做。 这是一种解决方法,但这是我所期望的。
停止! 不要拘束。 继续阅读…
运行它,将其设置为pipe理员应该自动login。
在任务计划程序中创build一个任务。 将其设置为仅在用户(pipe理员)login时运行。 触发器是“在login”,并指定它只有当pipe理员login。
创build第二个任务。 仅在用户login时运行,在pipe理login时触发。 操作应该是“启动程序”,程序是“C:\ Windows \ System32 \ rundll32.exe”,参数字段设置为“user32.dll,LockWorkStation”。
如果您重新启动计算机,现在会发生什么情况是pipe理员自动login,要启动的程序已启动并且工作站已被locking。 如果我通过远程桌面连接login,我可以看到程序窗口并使用GUI。 我可以locking/解锁电脑没有问题,断开/重新连接,我喜欢。 如果我去服务器并在实际的工作站上login也没有问题。 由于pipe理员已经login,任务将不会再次运行(它不会创build一些无法login的无限制loginlocking循环)。
就那么简单。 当然,在自动login之后,计算机被locking的时间还有一秒,我估计在这个时间窗口内,一个能够访问计算机的黑客可以偷偷摸摸地做一些事情,但是在我的情况下,我可以忽略这种安全风险。 只要我不让任何职业黑客进入我家,向他们展示电脑系统应该是相对安全的。 最重要的是在电脑上没有太多价值需要超级保护,所以我对这个解决scheme非常满意。
我有一个使用Windows Server 2012上的任务计划程序在系统启动时启动的程序。即使计算机自动重启,程序也必须启动。
那么为什么你不把它作为一个系统服务,因为Windows的规格定义?
我该如何解决这个问题?
你不能。 后台程序不应该与UI交互。 或者:用户界面应该运行自己的程序,然后连接到服务。 在login用户的用户空间运行的用户界面执行演示,Windows服务进行处理。 这就是15年左右的模式devise。
我很惊讶微软在调度程序中允许有这样的限制。
我更惊讶,你从来没有问过为什么。
有多个问题:
顺便说一下,我不想制作一个单独的GUI程序来连接到原来的程序。
在这一点上,我和微软都不在乎你喜欢做什么。 有一个build立和支持的模型,将后台处理绑定到login的用户界面 – 使用或不使用。 但是,如果没有,不要夸大你所提出的安全问题。
这是关于你的程序运行的Session
。如果没有人login,没有交互式会话显示在下,我相信它运行在Session 0
,其中有一个奇怪的用户界面,不会像其他显示。
现在,如果你的程序检测到explorer.exe
启动的时候(或者其他一些检测用户login的方法),神奇地重新定位了自己,或者在新的sessionid上产生了一些subprocess,那么任何login的人都会很高兴地看到你在做什么。