You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否修改CreateFileW的dwShareMode:从FILE_SHARE_WRITE改为FILE_SHARE_READ?

关于修改CreateFileW共享模式的问题

不行,无法在调用CreateFileW打开文件后修改已有的共享模式。共享模式是文件句柄创建时就确定的属性,一旦打开就无法更改——Windows内核不会提供修改共享权限的API,因为这会打破文件句柄之间的共享约定,引发竞态条件。

你提到的内存映射文件提升权限,其实是映射时可以指定比原句柄更高的访问权限(只要原句柄的权限足够),但这和共享模式是两码事:

  • 访问权限控制的是当前句柄能对文件做什么(读/写/执行)
  • 共享模式控制的是其他进程打开文件时能使用什么权限

如果你的需求是阻止其他进程写入文件,可以换个思路:

  • 直接以FILE_SHARE_READ模式打开文件(完全不允许共享写入),这样其他进程就无法以可写方式打开它
  • 如果必须先允许写入再锁定,只能先关闭原句柄,再以FILE_SHARE_READ重新打开——但这中间存在间隙,可能被其他进程抢占打开
  • 或者使用文件锁(比如LockFileEx)锁定整个文件范围,这样其他进程的写入操作会被阻塞,但这只是锁定内容,不是修改共享模式

内容的提问来源于stack exchange,提问作者Okoba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:15:53