【发布时间】:2014-08-31 19:02:12
【问题描述】:
我正在创建一个微型过滤器驱动程序。在那我与用户模式应用程序进行通信以获取用户的一些数据。我使用“通信端口”与用户模式通信。我试图与用户模式应用程序通信它工作正常。
我从其他人那里得到的一个建议是使用 Windows 服务来获取数据,因为它会一直运行,我们希望用户模式应用程序一直运行。
我的问题是
1) 我可以在windows服务中创建“通讯端口”吗?
2) 如果我创建 Windows 服务,如何获取特定的用户信息。我的意思是,当我向服务发送请求时,服务如何知道需要从哪个用户会话数据中获取?
3) 哪个更好,我的意思是用户模式或 Windows 服务是更好的解决方案。
【问题讨论】:
-
Windows 服务几乎属于“用户模式应用程序”这一术语。它使用特定的 API 将自己标识为服务,可以使用 SYSTEM 权限运行,并且可能无法显示 UI,但除此之外,它几乎是一个用户模式应用程序,就像任何其他应用程序一样。请注意,服务与特定用户会话无关。
-
好的,形成微型过滤器驱动程序,我们可以从微型过滤器驱动程序中得到调用的会话。
-
没有会话。服务不与用户交互。有一个服务进程,无论有多少用户(包括没有)登录到机器,它都会运行。
-
好的,如果我想与用户模式通信,我需要模拟该用户,以便我可以获得用户特定的数据。但唯一的问题是要模仿哪个用户
-
如果您需要成为该用户,只需以该用户身份运行常规应用程序即可。模拟用户需要获取该用户的令牌,这只能通过 LogonUser(需要密码)或通过从已经以该用户身份运行的程序中为该用户查找现有令牌来[轻松]完成。
标签: c++ c winapi driver minifilter