在系统驱动器中创建文件时,fopen无形地失败(C:\)

Zai*_*zvi 5 c c++ windows fopen

每当我尝试使用fopen创建文件时,fopen就像文件已正确打开并且它具有对它的完全访问权限,但它实际上并不创建文件.我的程序没有对系统根文件夹的写访问权限,因为它需要管理员访问权限才能写入,但为什么fopen()没有给出任何错误?

知道怎么判断是否有错误?当我尝试在受保护目录中打开文件时返回的文件句柄与我在具有写访问权限的目录中打开文件时完全相同.

我已尝试使用各种不同版本的fopen(fopen,_wfopen,_wfopen_s),但它们都具有相同的输出.

有趣的是,GetLastError()返回ERROR_ALREADY_EXISTS.

这是我正在使用的代码:

FILE *FileHandle; 
DWORD error = _wfopen_s(&FileHandle, L"\\filename.txt", L"a");
Win32Error = GetLastError();

if (error != 0 || FileHandle == NULL)
{
    //Throw error
}
else 
{
    //write to file
    //close file
}
Run Code Online (Sandbox Code Playgroud)

编辑:正如重新运行所指出的,由于虚拟化,该文件正在%APPDATA%中创建.有谁知道如何禁用此功能?

rer*_*run 6

这可能与虚拟商店有关.看看这里的一些信息.