Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在windows c/c+;中将目录/usb驱动器设为只读+;_C++_Windows_Readonly_Createfile - Fatal编程技术网

C++ 在windows c/c+;中将目录/usb驱动器设为只读+;

C++ 在windows c/c+;中将目录/usb驱动器设为只读+;,c++,windows,readonly,createfile,C++,Windows,Readonly,Createfile,我正在使用CreateFile将FILE\u ATTRIBUTE\u READONLY用作dwFlagsAndAttributes,使目录只读 但是,这会完全阻止对驱动器的访问。我无法遍历该目录或查看其中的任何文件 它显示访问被拒绝 我的代码: LPWSTR wszPath = L"\\\\.\\F:"; // path to the drive HANDLE hDevice = INVALID_HANDLE_VALUE; // handle to the drive hDevice

我正在使用
CreateFile
FILE\u ATTRIBUTE\u READONLY
用作dwFlagsAndAttributes,使目录只读

但是,这会完全阻止对驱动器的访问。我无法遍历该目录或查看其中的任何文件

它显示访问被拒绝

我的代码:

LPWSTR wszPath = L"\\\\.\\F:";      // path to the drive
HANDLE hDevice = INVALID_HANDLE_VALUE;  // handle to the drive
hDevice = CreateFile(wszPath,          // drive to open
            (GENERIC_READ|GENERIC_WRITE),    
            FILE_SHARE_READ,  // share mode
            NULL,             // default security attributes
            OPEN_EXISTING,    
            FILE_ATTRIBUTE_READONLY,       // file attributes
            NULL); 
if (hDevice == INVALID_HANDLE_VALUE)    // cannot open the drive
    {
        wprintf(L" hDevice INVALID_HANDLE_VALUE. Error %ld.\n", GetLastError());
        CloseHandle(hDevice);
        return (FALSE);
    }
      wprintf(L"Successfully opened");
错误消息pic

由于我将文件属性作为file\u ATTRIBUTE\u READONLY传递,所以它应该是只读的,为什么它不能让访问文件

语言:c++

平台:windows

有什么想法吗


提前感谢。

最有可能的情况是,提升(以管理员身份运行)是required@dewaffled程序运行良好。但是我们无法遍历文件进行读取。它显示位置F:\不可用,访问被拒绝,如上图所示。您打开的是卷设备,而不是目录。文件属性只能在文件系统文件和目录上设置,不能在设备上设置。只读文件属性将被忽略。这里发生的情况是,通过打开“///F:”卷设备,只进行读共享(即
文件共享\u读取
),而不共享写访问或删除访问,您隐式地使文件系统锁定卷,以便只能通过正在创建的文件对象访问卷。其他任何东西都无法访问该卷。有关具体示例,请参阅fastfat文件系统驱动程序中的。@ErykSun非常感谢您为我解释清楚。