CreateFile在Win10中返回Access_Denied

时间:2015-04-17 11:05:10

标签: windows winapi

当我在我的项目中尝试时,

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);
 }

2 个答案:

答案 0 :(得分:2)

最明显的解释是,您的用户根本没有足够的权限在系统驱动器的根级别创建文件。

由于Windows 7,甚至可能是Vista,系统驱动器的默认安全配置允许标准用户在根级别创建文件夹,但不允许文件。所以,我的假设是你没有像你声称的那样提升你的进程,但实际上是在运行具有标准用户权限的进程。为了在该位置创建文件,您需要:

  1. 使用提升的权限运行流程,或
  2. 修改卷的安全设置。

答案 1 :(得分:0)

我在浏览器中运行我的应用程序。 IE设置存在问题。当我从IE-> Security->禁用保护模式启用保护模式时,CreateFile()工作。另一个解决方案是将ip添加到IE中的可信站点。