C createFile无法读取文件error_access_denied

C++ CreateFile cant read file ERROR_ACCESS_DENIED

本文关键字:error access denied 文件 读取 createFile      更新时间:2023-10-16

我正在尝试读取文件内容,但是尽管它能够写入同一文件。我无法从中读书!该程序作为管理员运行。

我试图给出" file_share_write | file_share_read"权利,但仍然不起作用。

DWORD   dwBytesWritten = 0;
unsigned long BytesRead = 0;
HANDLE hFile = INVALID_HANDLE_VALUE;
wchar_t text_file[MAX_PATH] = { 0 };

TCHAR *save_text(void) {
    OPENFILENAME    ofn = { 0 };
    TCHAR filename[512] = _T("C://Windows/EXAMPLE.txt");
    ofn.lStructSize = sizeof(ofn);
    ofn.lpstrFilter = L"Txt files (*.txt)*.txtAll Files*.*";
    ofn.lpstrFile = filename;
    ofn.nMaxFile = sizeof(filename);
    ofn.Flags = OFN_NONETWORKBUTTON | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_LONGNAMES | OFN_EXPLORER | OFN_HIDEREADONLY;
    ofn.nFilterIndex = 1;

    return(filename);
}


void WriteToFile(TCHAR *wText)
{
    wchar_t loginchar[1000];
    hFile = CreateFile(text_file, FILE_APPEND_DATA, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL);
    WriteFile(hFile, wText, wcslen(wText) * sizeof(wchar_t), &dwBytesWritten, NULL); // its writing without problem
    ReadFile(hFile, loginchar, wcslen(loginchar) * sizeof(wchar_t), &BytesRead, NULL); // accses denied
    ResultInFile(GetLastError()); // ResultInFile funcitons writes paramater to the file 
    //ResultInFile(BytesRead); // to see how many bytes read, but of course doesnt work..
    CloseHandle(hFile);
}
// this is the how file created at main function : 
hFile = CreateFile(txt_file, FILE_APPEND_DATA, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL);

尝试:

 hFile = CreateFile(text_file, FILE_APPEND_DATA | FILE_READ_DATA, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL);

而不是:

 hFile = CreateFile(text_file, FILE_APPEND_DATA, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL);

请注意,file_share_read允许其他createfile的调用要求读取权限,它不会影响您的文件句柄的读取权限。

相关文章: