社区
驱动开发/核心开发
帖子详情
设备在非管理员权限下无法打开,createfile返回值为(0x0005)
chijiaoxian
2008-07-20 04:44:07
大家好:
最近在做一个无线网卡设备,在管理员权限下安装驱动,设备功能一切正常,在这个基础上,转换到非管理员权限下,使用应用程序打开设备,显示获得设备句柄失败。
API部分调用的CreateFile函数返回值为0x0005(ERROR_ACCESS_DENIED)。
请各位大侠给支个招吧,这两天为了这个事情已经弄的焦头烂额了,迫在眉睫,本人在线等。非常感谢!!!
...全文
983
6
打赏
收藏
设备在非管理员权限下无法打开,createfile返回值为(0x0005)
大家好: 最近在做一个无线网卡设备,在管理员权限下安装驱动,设备功能一切正常,在这个基础上,转换到非管理员权限下,使用应用程序打开设备,显示获得设备句柄失败。 API部分调用的CreateFile函数返回值为0x0005(ERROR_ACCESS_DENIED)。 请各位大侠给支个招吧,这两天为了这个事情已经弄的焦头烂额了,迫在眉睫,本人在线等。非常感谢!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fyx010641
2009-08-18
打赏
举报
回复
找到方法了吗?
先在管理员下提升权限,代码如下,我调试过了,肯定行的!
BYTE aclBuffer[1024];
PACL pacl=(PACL)&aclBuffer; //声明一个ACL,长度是1024
BYTE sidBuffer[100];
PSID psid=(PSID) &sidBuffer; //声明一个SID,长度是100
DWORD sidBufferSize = 100;
// char domainBuffer[80];
DWORD domainBufferSize = 80;
// SID_NAME_USE snu;
HANDLE file;
UINT i = 0;
SECURITY_DESCRIPTOR sd; //声明一个SD BYTE aclBuffer[1024];
SECURITY_ATTRIBUTES sa; //和文件有关的安全结构
//初始化一个ACL
//初始化一个SD
HANDLE hAccessToken;
PSID psidAdministrators;
//当获得TOKEN句柄之后,我们还得获取这个TOKEN的分组信息:
BYTE InfoBuffer[1024];
DWORD dwInfoBufferSize;
SID_IDENTIFIER_AUTHORITY siaNtAuthority = SECURITY_NT_AUTHORITY;
//初始化一个SD
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
//初始化一个ACL
InitializeAcl(pacl, 1024, ACL_REVISION);
//查找一个用户hchen,并取该用户的SID
OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&hAccessToken);
BOOL flag = GetTokenInformation(
hAccessToken,
TokenGroups,
InfoBuffer,
1024,
&dwInfoBufferSize);
AllocateAndInitializeSid(
&siaNtAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0,0,0,0,0,0,
&psidAdministrators);
PTOKEN_GROUPS ptgGroups = (PTOKEN_GROUPS)InfoBuffer;
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
InitializeAcl(pacl, 1024, ACL_REVISION);
for( i=0; i<ptgGroups->GroupCount; i++)
{
// if(EqualSid(psidAdministrators, ptgGroups->Groups[i].Sid))
{
// 此进程有管理权限
AddAccessAllowedAce(pacl, ACL_REVISION, GENERIC_ALL, ptgGroups->Groups[i].Sid);
// break;
}
}
//设置该用户的Access-Allowed的ACE,其权限为“所有权限”
AddAccessAllowedAce(pacl, ACL_REVISION, GENERIC_ALL, psid);
//把ACL设置到SD中
SetSecurityDescriptorDacl(&sd, TRUE, pacl, FALSE);
//把SD放到文件安全结构SA中
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = FALSE;
sa.lpSecurityDescriptor = &sd;
HANDLE hDevUSB = NULL;
hDevUSB = CreateFile(
lpszFileName,//&guidHID_1,//
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,//FILE_ATTRIBUTE_NORMAL
NULL);
有问题可以和我联系,QQ 99592177 fangyx@wellcom.cn 共同学习!
fyx010641
2009-08-18
打赏
举报
回复
qq
aaazxd
2009-05-11
打赏
举报
回复
请问你找到方法解决了吗?
Treeyan
2008-08-08
打赏
举报
回复
很简单
既然是自己做的驱动,是可以操作的,CreateFile 的时候使用 0 作为操作标志 不要使用任何 GENERIC_XXXX 标志,定义IO_CONTROL_CODE 的时候去掉权限,就OK了。enjoy
dzyssssss
2008-08-06
打赏
举报
回复
顶!应用层是直接打开不了的。
cnzdgs
2008-07-20
打赏
举报
回复
很正常,现在的Windows系统就是不允许非管理员身份的进程直接访问设备。
create
file
无权限_
设备
在
非
管理员权限
下
无法
打开
,
create
file
返回值
为(
0x0005
)
找到方法了吗?先在管理员下提升权限,代码如下,我调试过了,肯定行的!BYTE aclBuffer[1024];PACL pacl=(PACL)&aclBuffer; //声明一个ACL,长度是1024BYTE sidBuffer[100];PSID psid=(PSID) &sidBuffer;//声明一个SID,长度是100DWORD sidBufferSize = 100;...
create
file
无权限_VS软件默认安装路径修改、
Create
File
返回值
为0xffffffff、处理文件-
File
失败,不具有.ps1扩展名、调用有
管理员权限
的cmd、
无法
正常运行.exe且...
本次软件整理遇到的问题整理1、打包默认安装路径有空格怎么办打包的默认安装路径在解决方案--打包项目(**Setup)--右键--view-文件----Application Folder--属性,DefaultLocation默认为[Program
File
s64Folder][Manufacturer][\ProductName],其中:Program
File
s64Folder]默认C盘的prog...
create
file
无权限_
Create
File
打开
驱动
设备
权限不足
Create
File
打开
驱动
设备
权限不足记得以前写了一个文件过滤驱动,使用的是minifilter的框架。在创建
设备
时,很常规的使用Io
Create
Device来创建一个命名的
设备
对象,然后对这个
设备
名使用Io
Create
SymbolicLink创建其应用层的链接符号名,这样我们在应用层就可以通过
Create
File
函数就可以
打开
这个
设备
,然后通过Write
File
,Read
File
和Device...
Windows下GetLastError()
返回值
介绍
Windows下GetLastError()
返回值
大全
详细介绍
Create
File
()
是 Windows API 中用于创建或
打开
文件、
设备
、管道等核心对象的底层函数。它在
头文件中声明,提供了对文件操作的精细控制。
驱动开发/核心开发
21,615
社区成员
21,711
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章