我到处搜索并尝试了几乎所有东西,我开始认为这是不可能的。我有一个在会话 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。