本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Windows 服务无法访问某些信息

发布于2024-11-23 21:54     阅读(351)     评论(0)     点赞(30)     收藏(0)


我已经创建了一个服务。它运行良好……安装、启动、停止等。我正在尝试使用 JNA 捕获某些内容。这是我捕获的内容的代码。

PointerType hwnd = User32.INSTANCE.GetForegroundWindow(); // then you can call it!
User32.INSTANCE.GetWindowTextA(hwnd, windowText, 512);
log.info("Window title is: "+Native.toString(windowText));

记录器存储了意料之外的内容

17:54:59,472  INFO rkactivityclientlog:33 - Window title is: 
17:55:00,477  INFO rkactivityclientlog:33 - Window title is: 

如果我尝试捕获 intbyreference,它会打印 0。

编辑::如果我尝试获取任何其他对象(如日期),它会正常进行,就像

18:04:15,885  INFO rkactivityclientlog:39 - Time is: Wed Jun 12 18:04:15 IST 2013

但它没有捕获本机变量:(

但是我可以在标准输出中捕获所需的信息。

请提供任何帮助。


解决方案


从 Windows Vista 开始,服务无法访问桌面。请参阅 MSDN 文章“交互式服务”。服务现在在与任何已登录用户不同的会话中运行。

从 Windows Vista 开始,服务无法直接与用户交互。

为了访问用户桌面上的窗口信息,您需要编写一个可以在用户特定上下文中执行的应用程序。然后,该应用程序需要通过某种 RPC 机制与您的服务进行通信。

原因在于服务通常以非常高的权限运行。过去,交互式服务一直是安全漏洞的源头。特别是,攻击者能够使用一种称为“粉碎攻击”的技术来提升权限。

粉碎攻击利用了 Windows 消息传递系统的设计缺陷,利用消息循环,任意代码可以注入到同一会话中任何其他正在运行的应用程序或服务中。这可能导致特权升级漏洞。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/693953/8582d2f544e1b1df2640/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)