操作NTFS磁盘上文件需要注意的地方

来源:互联网 发布:什么是seo和sem 编辑:程序博客网 时间:2024/04/28 03:18

今天我打算写一个测试程序,需要读取和写入文件,想往常一样,写了如下代码

std::wstring sourcefilename = L"F:\\1.txt";//打开源文件HANDLE hSourceFile = CreateFile(sourcefilename.c_str(),GENERIC_ALL,NULL,NULL,OPEN_EXISTING,NULL,NULL);


却发现访问文件失败,错误码为5(拒绝访问)。尝试访问这个磁盘下同样的文件也会失败。而后分析出这个磁盘为NTFS,会不会和这个有关系?于是我访问了另一个FAT32磁盘的文件,同样用GENERIC_ALL标志位,访问成功。

经测试,默认情况下(文件的安全性为默认,文件的安全属性为NULL),用GENERIC_ALL访问NTFS分区上已存在的文件会失败,而如果用GENERIC_READ、GENERIC_WRITE甚至GENERIC_EXECUTE都会成功。而如果访问文件不存在,则会成功(若文件存在,即使用CREATE_ALWARYS创建文件也会失败)

 

原创粉丝点击