社区
驱动开发/核心开发
帖子详情
设备在非管理员权限下无法打开,createfile返回值为(0x0005)
chijiaoxian
2008-07-20 04:44:07
大家好:
最近在做一个无线网卡设备,在管理员权限下安装驱动,设备功能一切正常,在这个基础上,转换到非管理员权限下,使用应用程序打开设备,显示获得设备句柄失败。
API部分调用的CreateFile函数返回值为0x0005(ERROR_ACCESS_DENIED)。
请各位大侠给支个招吧,这两天为了这个事情已经弄的焦头烂额了,迫在眉睫,本人在线等。非常感谢!!!
...全文
1073
6
打赏
收藏
设备在非管理员权限下无法打开,createfile返回值为(0x0005)
大家好: 最近在做一个无线网卡设备,在管理员权限下安装驱动,设备功能一切正常,在这个基础上,转换到非管理员权限下,使用应用程序打开设备,显示获得设备句柄失败。 API部分调用的CreateFile函数返回值为0x0005(ERROR_ACCESS_DENIED)。 请各位大侠给支个招吧,这两天为了这个事情已经弄的焦头烂额了,迫在眉睫,本人在线等。非常感谢!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
)
本文介绍了如何在
非
管理员权限
下通过代码提升权限,使用
Create
File
打开
设备
。通过初始化ACL、SD,获取当前进程的TOKEN并设置访问权限,最终成功创建文件句柄。提供了解决
Create
File
返回
0x0005
错误的方法。
Python全栈开发源码包:Pandas数据分析Matplotlib可视化FastAPI接口与Excel自动化办公
Python 全栈开发实战源码包,含四类可运行示例,附 sample 数据,解压即可使用。 【包含模块】 1. Pandas 数据分析:批量合并 CSV、去重、导出 Excel 2. Matplotlib 可视化:销售趋势折线图与产品汇总统计 3. openpyxl 自动化:自动生成带折线图的 Excel 周报 4. FastAPI Web 接口:健康检查与销售数据 REST 查询 【使用方法】 1. 安装依赖:pip install -r requirements.txt 2. 一键演示:python run_all_demos.py 3. 启动 API:uvicorn module_04_fastapi_demo:app --host 127.0.0.1 --port 8000 4. 接口文档:浏览器
打开
http://127.0.0.1:8000/docs 【目录说明】 data/ 示例 CSV 数据 | output/ 运行输出 | README.md 详细说明 【环境要求】Python 3.8+,支持 Windows / macOS / Linux
设计工作室 DWG 图纸乱码?下载设计专用字体库.rar
解决CAD图纸文字变问号、文字变乱码,欢迎下载!
顶刊复现配电网两阶段鲁棒故障恢复研究(Matlab代码实现)
内容概要:本资源聚焦于配电网在发生故障后的两阶段鲁棒恢复研究,旨在提升电力系统在不确定性条件下的恢复能力与运行可靠性。研究采用两阶段优化方法,第一阶段进行预恢复决策,如网络重构、分布式电源出力调整等,以最小化预期损失;第二阶段则针对实际发生的故障场景实施校正控制,利用鲁棒优化理论应对负荷波动、新能源出力不确定性等因素,确保恢复方案的可行性与强健性。资源提供了完整的Matlab代码实现,复现了相关顶刊研究成果,便于使用者深入理解模型构建、算法求解及仿真分析全过程。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员及电力行业工程师。; 使用场景及目标:① 学习并掌握配电网故障恢复的先进优化方法,特别是两阶段鲁棒优化模型的构建与应用;② 复现和验证顶刊论文中的算法,为自身科研工作提供技术参考和代码基础;③ 将所学方法拓展应用于微电网、主动配电网等新型电力系统的可靠性评估与优化调度研究。; 阅读建议:学习者应结合提供的Matlab代码,仔细研读模型的数学公式与求解逻辑,重点关注不确定性建模、两阶段决策变量的设定以及鲁棒对等转换技巧。建议在掌握基础案例后,尝试修改参数或引入新的约束条件进行扩展研究,以深化理解并提升创新能力。
易语言源码易语言D2D物理效果源码
易语言源码易语言D2D物理效果源码
驱动开发/核心开发
21,620
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章