您的位置:首页技术文章
文章详情页

c++ - win7下CreateFile失败,GetLastError返回5

【字号: 日期:2022-10-12 08:49:46浏览:41作者:猪猪

问题描述

我在DLL中使用了如下代码创建文件:

HANDLE pHandle = CreateFile('C:test',GENERIC_ALL,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);if (pHandle ==INVALID_HANDLE_VALUE)cout<<'CreateFile Error:'<<GetLastError()<<endl;

然后将dll注入到explorer.exe中执行。在xp以及没有开启UAC的win7上都是正常的,但开启了UAC的win7上,会创建失败,GetLastError返回的是5,权限不足。为什么会失败呢?explorer.exe难道不是管理员权限运行的吗?哪怕不是,应该也有文件读写的权限吧?请问该如何处理才能成功创建呢?

问题解答

回答1:

explorer.exe当然不是以管理员权限运行的你在文件管理器中,定位到系统盘根目录,试试新建一个文件,同样失败

回答2:

用vs2010的情况就是:项目-属性-连接器-清单文件-UAC执行级别,选择requireAdministrator。

标签: Windows系统 win7