在没有管理员特权的情况下从用户应用程序访问驱动程序IOControl



我已经编写了一个windows内核模式驱动程序来访问PCI Express板的内存空间,并且我能够使用CreateFile和DeviceIOControl功能与驱动程序的IO控制进行通信。除了用户应用程序需要以管理员权限运行之外,一切看起来都很好,因为需要对PCI设备进行读/写访问。这在我的应用程序中是一个挑战,因为我不能期望我的用户在运行应用程序时拥有管理员权限。为了解决这个问题,到目前为止,我已经提出了以下想法:

1) 在驱动程序中创建命名管道并在用户应用程序中访问它,但我不确定驱动程序是否有权访问用于创建和访问命名管道的windows API。

2) 创建一个windows服务,该服务以管理员权限运行,并成为用户应用程序和驱动程序之间的接口。尽管它很实用,但这个解决方案似乎有些过头了。

我感谢对上述解决方案的任何评论,以及与驾驶员沟通的常见做法。

感谢

您的驱动程序可以为它创建的设备对象分配任何合适的权限。默认设置仅允许管理员向设备发送I/O控制请求,但您可以根据需要进行配置。

MSDN标题为"保护设备对象"的部分介绍了这一点。

感谢大家的评论。WdfDeviceInitAssignSddlString是我需要在KMDF中使用的。此API指定访问驱动程序的I/O控制器所需的特权。

相关内容

最新更新