Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在没有UAC的情况下打开设备驱动程序时,CreateFile()失败_Windows_Kernel_Device Driver_Createfile - Fatal编程技术网

Windows 在没有UAC的情况下打开设备驱动程序时,CreateFile()失败

Windows 在没有UAC的情况下打开设备驱动程序时,CreateFile()失败,windows,kernel,device-driver,createfile,Windows,Kernel,Device Driver,Createfile,我现在正在分析设备驱动程序二进制文件。我编写了如下代码: CreateFileA("\\\\.\\device_name", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); 我从CreateFileA()返回的结果是无效的句柄值(0xFFFFFFFF),没有UAC。当我使用UAC认证运行相同的代码时,它工作得很好,它给了我有效的句柄 我听说访问设备驱动程序的权限由IoCreateD

我现在正在分析设备驱动程序二进制文件。我编写了如下代码:

CreateFileA("\\\\.\\device_name", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
我从CreateFileA()返回的结果是无效的句柄值(0xFFFFFFFF),没有UAC。当我使用UAC认证运行相同的代码时,它工作得很好,它给了我有效的句柄

我听说访问设备驱动程序的权限由IoCreateDevice()的设备类型参数决定。我检查了它,但驱动程序类型是FILE\u DEVICE\u UNKNOWN(0x22),不仅管理员可以访问它,其他用户也可以访问它。但我失败了

所以我很沮丧。我想错了吗?为什么我在CreateFile()上失败了?有人能帮我吗


谢谢你的阅读。祝您愉快。

GetLastError()对我说5,访问被拒绝否,访问设备的权限(不一定)由设备类型决定。设备驱动程序可以设置它喜欢的任何权限。如果您遇到错误\u访问\u拒绝,这很好地表明设备上的权限不允许非管理员打开它。您可以使用winobj.exe检查设备对象的安全性。“设备名称”符号链接应位于“\Global???”中,并应解析为“\device”中的设备对象。这很可能会确认只有管理员和系统才能使用
GENERIC_READ | GENERIC_WRITE
访问权限打开设备。其他人可能只有
GENERIC\u READ
GENERIC\u EXECUTE
权限。@HarryJohnston哦,我学错了。。。我应该检查决定权限的其他元素。。。非常感谢@eryksun多棒的工具啊,winobj!我用winobj检查了那个设备驱动程序,发现管理员是唯一有权访问的人。看来,我猜访问设备的权限是在安装时确定的。我应该查一下。谢谢!GetLastError()对我说5,访问被拒绝否,访问设备的权限(不一定)由设备类型决定。设备驱动程序可以设置它喜欢的任何权限。如果您遇到错误\u访问\u拒绝,这很好地表明设备上的权限不允许非管理员打开它。您可以使用winobj.exe检查设备对象的安全性。“设备名称”符号链接应位于“\Global???”中,并应解析为“\device”中的设备对象。这很可能会确认只有管理员和系统才能使用
GENERIC_READ | GENERIC_WRITE
访问权限打开设备。其他人可能只有
GENERIC\u READ
GENERIC\u EXECUTE
权限。@HarryJohnston哦,我学错了。。。我应该检查决定权限的其他元素。。。非常感谢@eryksun多棒的工具啊,winobj!我用winobj检查了那个设备驱动程序,发现管理员是唯一有权访问的人。看来,我猜访问设备的权限是在安装时确定的。我应该查一下。谢谢!