是否可以看到系统的用户桌面?如何从另一个会话到您的用户的桌面?

发布于 2024-11-28 11:51:46 字数 124 浏览 1 评论 0原文

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

有没有办法让我看到我的程序? 将桌面切换到系统用户?

I run Windows 7.
I run windows service that runs a program with GUI.
I cannot see the GUI of my program because it was started from another session by system or even my user.

Is there a way for me to see my program?
Switch desktop to system user?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天涯离梦残月幽梦 2024-12-05 11:51:46

使用 SetThreadDesktop() 将服务中的线程上下文更改为用户桌面。

  • SetThreadDesktop() 将桌面句柄作为第一个参数;要获取该句柄,请使用 EnumDesktops()< /代码>
  • EnumDesktops() 将窗口站的句柄作为第一个参数;要获取该句柄,请使用 EnumWindowStations( )

要了解 Window Station 和桌面的情况,请尝试阅读 此概述来自 MSDN。

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

Use SetThreadDesktop() to change the thread's context in your service to the user's desktop.

  • SetThreadDesktop() takes a handle to the desktop as it's first parameter; to get that handle, use EnumDesktops().
  • EnumDesktops() takes a handle to the window station as it's first parameter; to get that handle, use EnumWindowStations()

To understand what's going on with Window Stations and Desktops, try reading this overview from from MSDN.

Be cautious with this technique. Higher-privileged processes (i.e., services) interacting with the user's desktop are the basis for shatter attacks. You need to write a separate application that runs in the user's context and communicates with your service via pipes or similar.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文