【发布时间】:2012-07-19 16:12:32
【问题描述】:
我到处搜索并尝试了几乎所有东西,但我开始认为这是不可能的。 我有一个在会话 0 (win7) 中作为 SYSTEM 运行的服务。我需要启动一个外部应用程序。如果我只是以 SYSTEM 身份启动外部应用程序,应用程序就会启动并且我可以看到 GUI(如果我使用 UI0Detect 单击会话 0)。除了我能够看到它之外,我启动应用程序的服务实际上可以截取 GUI 的屏幕截图并将其发送回我的服务器。 - 在这一点上一切都很好。
问题 - 在某些情况下,外部应用程序不允许在 SYSTEM 上下文下运行。在这些情况下,我必须以其他用户身份启动。我在会话 0 中以实际用户身份运行另一个服务。然后我以该其他用户身份启动外部应用程序。外部应用程序在会话 0 中启动,我指定 WinSta0\Default 以确保应用程序 GUI 在我的 SYSTEM 服务可以看到的同一桌面上启动。当这种情况发生时 UI0Detect 弹出给我的印象是我将点击并查看我的窗口。当我进入会话 0 或当我的服务尝试截屏时,只有一个小黑匣子。几乎就像只有 SYSTEM 帐户可以在会话 0 中呈现窗口 - 这是真的吗?有人知道会话 0 中运行的用户帐户是否能够呈现 GUI?
我不是在寻找有关如何将应用程序从会话 0 启动到活动用户桌面的代码。这是有据可查的。我需要知道的是如何实现反向(有点)。我需要从 SYSTEM 以外的帐户在会话 0 中启动 GUI。
【问题讨论】:
-
您为什么要这样做?服务可以在没有可视化桌面的情况下运行——在这种情况下,没有任何可视化桌面,并且没有用户可以与 UI 交互。在这种情况下,您的应用程序会做什么?