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

禁用文件修改权限后无法锁定文件?多用户桌面应用技术求助

问题原因与解决方案

核心原因

你当前使用的FileStream构造方法指定了FileAccess.ReadWrite,这要求程序对目标文件拥有写入/修改权限。但你给用户配置的文件夹权限仅包含读取、创建,缺少写入权限,因此系统会抛出权限异常。

另外你提到启用修改权限后用户无法删除文件,这是NTFS权限的特性:修改权限仅包含「写入、修改内容」,删除是独立的权限项,所以即使开了修改权限,只要没给删除权限,用户确实无法删除文件。

修正方案

你的需求是锁定原文件防止多用户同时处理,而非修改原文件(原文件是最终版会计文档),所以完全不需要以ReadWrite模式打开文件。将FileAccess改为Read,同时保留FileShare.None即可实现锁定效果:

FileStream file = new FileStream(@"H:\" + doc_number + ".docx", FileMode.Open, FileAccess.Read, FileShare.None);

这样做的好处:

  • 仅需读取权限,符合你对用户的权限配置要求,不会触发权限异常
  • FileShare.None会阻止其他进程以任何方式打开该文件,直到当前流关闭,完美实现首个用户锁定、后续用户无法访问的互斥逻辑

额外建议

如果原文件是只读属性(因为是最终版),无需额外调整——只要用户有读取权限,FileMode.Open配合FileAccess.Read就能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:42:12