如何使用 CreateFile 在只读文件上打开读/写句柄

问题描述 投票:0回答:1

您好,我有一个简单的问题 - 使用 CreateFile 在只读文件上打开读/写句柄有哪些选项?我是否必须暂时删除只读属性,打开句柄,完成工作,然后重新应用该属性?还有其他方法吗?对于我的情况,相关程序具有管理权限。

这是现在的一些代码以及出现的问题:

HANDLE hTargetFile;
hTargetFile = CreateFile(QDir::toNativeSeparators(targetFileString).toStdWString().c_str(),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_BACKUP_SEMANTICS,NULL);

我从 GetLastError() 得到 CreateFile 失败,错误 5:访问被拒绝。

谢谢!

c++ winapi createfile
1个回答
0
投票
使用 CreateFile 在只读文件上打开读/写句柄有哪些选项?

没有。您无法获取只读文件的写入句柄 - 期间。

是否必须暂时删除只读属性,打开句柄,完成工作,然后重新应用该属性?

是的,完全正确。当然,这会产生竞争条件,因为一旦您删除只读属性,对该文件具有足够权限的任何其他进程都可以打开该文件进行写入,并在您能够打开该文件之前阻止您。给自己归档。

还有其他方法吗?

据我所知。

© www.soinside.com 2019 - 2024. All rights reserved.