【发布时间】:2011-01-18 20:22:15
【问题描述】:
每当我尝试使用 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
}
编辑:正如rerun 指出的那样,由于virtualization,文件正在%APPDATA% 中创建。有谁知道如何禁用此功能?
【问题讨论】: