Session 是否可以看到系统';用户桌面?如何从另一个会话中删除用户的桌面?

Session 是否可以看到系统';用户桌面?如何从另一个会话中删除用户的桌面?,session,windows-7,windows-services,desktop,Session,Windows 7,Windows Services,Desktop,我运行Windows7。 我运行windows服务,该服务运行带有GUI的程序。 我看不到我的程序的GUI,因为它是由系统甚至我的用户从另一个会话启动的 有办法让我看我的节目吗? 将桌面切换到系统用户?用于将服务中的线程上下文更改为用户的桌面 SetThreadDesktop()将桌面句柄作为第一个参数;要获得该句柄,请使用 EnumDesktops()将窗口站的句柄作为第一个参数;要获得该句柄,请使用 要了解Windows工作站和台式机的情况,请尝试阅读MSDN 对这种技术要小心。与用户桌

我运行Windows7。 我运行windows服务,该服务运行带有GUI的程序。 我看不到我的程序的GUI,因为它是由系统甚至我的用户从另一个会话启动的

有办法让我看我的节目吗? 将桌面切换到系统用户?

用于将服务中的线程上下文更改为用户的桌面

  • SetThreadDesktop()
    将桌面句柄作为第一个参数;要获得该句柄,请使用
  • EnumDesktops()
    将窗口站的句柄作为第一个参数;要获得该句柄,请使用
要了解Windows工作站和台式机的情况,请尝试阅读MSDN


对这种技术要小心。与用户桌面交互的更高权限的进程(即服务)是实现此功能的基础。您需要编写一个单独的应用程序,在用户上下文中运行,并通过管道或类似方式与您的服务通信。

这应该可以解决我的问题,但我也想知道是否有办法登录/切换用户到系统用户/本地服务用户/网络服务用户/**我登录的同一用户**。我在taskmanager中看到有一个由我的用户运行的程序实例,但我看不到它。是否有一种方法可以查看windows服务调用它之后是否会发生这种情况?这通常是通过ImpersonalLoggedOnUser()或它在API中的一个表亲完成的: