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

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

	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创建文件也会失败)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值