CreateFile()在Windows10中返回ACCESS_DENIED。如果我使用CreateFile()创建示例应用程序,它工作正常。甚至在调用CreateFile()之前尝试检查管理员权限,用户处于管理员模式。相同的代码在Win 7中工作正常。
以下是代码示例:
WCHAR userPath[] = L"C:\\test.txt";
HANDLE hFile = NULL;
hFile = ::CreateFile(userPath,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
wprintf(L"Error HANDLE = 0x%x \n",hFile);
}
else
{
wprintf(L"Suceess HANDLE = 0x%x \n",hFile);
::CloseHandle(hFile);
}
答案 0 :(得分:2)
最明显的解释是,您的用户根本没有足够的权限在系统驱动器的根级别创建文件。
由于Windows 7,甚至可能是Vista,系统驱动器的默认安全配置允许标准用户在根级别创建文件夹,但不允许文件。所以,我的假设是你没有像你声称的那样提升你的进程,但实际上是在运行具有标准用户权限的进程。为了在该位置创建文件,您需要:
答案 1 :(得分:0)
我在浏览器中运行我的应用程序。 IE设置存在问题。当我从IE-> Security->禁用保护模式启用保护模式时,CreateFile()工作。另一个解决方案是将ip添加到IE中的可信站点。