CreateFile() Failed With GetLastError() = 5

CreateFile() Failed With GetLastError() = 5

本文关键字:GetLastError Failed CreateFile With      更新时间:2023-10-16

我编写了一个示例应用程序来从另一个文件中读取文件。当我运行这个应用程序形式的虚拟机,我得到访问拒绝。代码如下:

int _tmain(int argc, _TCHAR* argv[])
{
    WCHAR *wcsPath = L"\\150.160.130.22\share\123.XML";
    HANDLE hFile = CreateFileW(wcsPath,
                               GENERIC_READ,
                               FILE_SHARE_READ,
                               NULL,
                               OPEN_EXISTING,
                               0,
                               0);
    if (NULL == hFile)
    {
        printf("failed - %d", GetLastError());
    }
    return 0;
}

错误码5代表"访问被拒绝"。您应该检查用户的访问权限。

我相信CreateFile的文档中有答案。

可能是你的dwShareMode引起的问题。使用FILE_SHARE_READ表示"允许其他打开器打开文件进行READ访问"。如果你没有指定FILE_SHARE_WRITE ',那么其他打开器将无法打开文件进行写入——你的调用将阻止这种情况。

但是,CreateFile,我相信,当sharemode将被先前的打开器违反时,也会失败。如果这是真的,那么如果另一个应用程序已经打开了文件进行写访问,那么如果指定dwShareMode = FILE_SHARE_READ,那么对CreateFile的调用将失败。你看到了吗?您可能需要为dwShareMode参数指定FILE_SHARE_WRITE | FILE_SHARE_READ

试试。

CreateFileW()的错误输出是INVALID_HANDLE_VALUE,而不是NULL。现在,NULL听起来也像一个错误的文件句柄值,但仍然。

粘贴的代码片段是程序的内容,还是重新描述?

编辑:我看到有一个虚拟机。您可以在程序运行的虚拟机中打开记事本中的文件并出错吗?