在没有人登录时在计算机启动时启动程序并在有人登录时显示窗口(操作系统:Windows)

Mar*_*cus 23 windows windows-server-2008 startup scheduled-task windows-server-2012

我有一个使用 Windows Server 2012 上的任务计划程序在系统启动时启动的程序即使计算机自动重新启动,该程序也必须启动。

Administrator 是用于启动程序的帐户,为任务选中“无论用户是否登录都运行”选项。

问题在于,当有人最终使用远程桌面连接以管理员身份登录时,界面(程序窗口)被隐藏。

据我了解,使用 Task Scheduler 无法解决此问题。

我该如何解决这个问题?

这应该是一个相当普遍的问题,但我无法通过搜索网络找到任何东西。我很惊讶微软在他们的调度程序中允许这样的限制。我可以制作一个 VBScript 或一些在启动时运行并启动程序的东西,然后在用户实际登录时可以看到它吗?

其他想法?

(顺便说一下,我不想制作一个单独的 GUI 程序来连接到原始程序。如果我不必在用户登录时终止已经运行的程序然后启动,我也更喜欢它再说一遍。)

Mar*_*cus 31

想出了如何自己做。这在某种程度上是一种解决方法,但这正是我期望得到的。

停止!不要畏缩。继续阅读...

  • 运行它,设置它以便管理员应该自动登录。

  • 在任务计划程序中创建一个任务。将其设置为仅在用户(管理员)登录时运行。触发器是“在登录时”并指定它仅在管理员登录时。

  • 创建第二个任务。仅在用户登录时运行,在管理员登录时触发。操作应为“启动程序”,程序为“C:\Windows\System32\rundll32.exe”,参数字段设置为“user32.dll, LockWorkStation”。

如果您重新启动计算机,现在会发生什么情况是管理员自动登录,您要启动的程序已启动并且工作站被锁定。如果我通过远程桌面连接登录,我可以看到程序窗口并使用 GUI。我可以毫无问题地锁定/解锁计算机并根据需要断开/重新连接。如果我转到服务器并在实际工作站上登录也没有问题。由于管理员已经登录,任务将不会再次运行(它不会创建一些您无法摆脱的无限登录锁定循环)。

就那么简单。当然,在自动登录后计算机被锁定之前还有一秒钟的时间,我猜可以物理访问计算机的专业黑客可以在此时间段内做一些偷偷摸摸的事情,但在我的情况下,我可以忽略这种安全风险。只要我不让任何专业黑客进入我的家并向他们展示计算机,系统应该是相对安全的。最重要的是,需要超级保险库保护的计算机没有那么多价值,所以我对这个解决方案非常满意。

  • 没有不尊重(或反对),马库斯。但是,如果这真的是您正在寻找的答案类型,那么这个问题将更适合 [SuperUser](http://superuser.com)。 (7认同)
  • 决定发布此内容的堆栈交换并不容易。 (2认同)

Tom*_*Tom 17

我有一个使用 Windows Server 2012 上的任务计划程序在系统启动时启动的程序。即使计算机自动重新启动,该程序也必须启动。

那么为什么不按照 Windows 规范的定义将其作为系统服务呢?

我该如何解决这个问题?

你不能。后台程序不应该与 UI 交互。或者:UI 应该运行它自己的程序,然后连接到服务。在登录用户的用户空间中运行的 UI 进行演示,Windows 服务进行处理。这就是模型的设计方式,大概 15 年左右。

我很惊讶微软在他们的调度程序中允许这样的限制。

我更惊讶的是你从来没有费心去问为什么。

有多个问题:

  • 当多人登录时,谁获得用户界面?
  • 当用户退出时,你杀死程序?哎哟。
  • 安全。后台程序可以在有限的权限下运行 - 向用户公开 UI 意味着用户可以在那里执行代码。Windows 消息传递模型 - 啊 - 充满问题。

顺便说一下,我不想制作一个单独的仅限 GUI 的程序来连接到原始程序。

在这一点上,我和微软都不关心你喜欢做什么。有一个已建立且受支持的模型可以将后台处理与登录的用户 UI 联系起来——使用或不使用它。但是,如果没有,请不要抱怨您提出的安全问题。

  • 哇,你的态度是不是很傲慢。好吧,我猜我运气不好。除非你被误导并且有人有办法解决这个问题,否则每个人都不能知道所有事情,所以你可能对你帖子中绝对“你不能”的部分是错误的。我想将问题悬而未决一段时间以获得更多答案,以防万一有人有不常见的解决方法可以分享。否则我会接受你的回答。 (16认同)
  • 阿门。我希望更多的应用程序供应商掌握这个概念。 (3认同)