文章详情页
c++ - win7下CreateFile失败,GetLastError返回5
问题描述
我在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。
排行榜