首页 > 解决方案 > 即使应用程序(C#/WPF)关闭也锁定文件

问题描述

我想在服务器上存储一些全局应用程序设置。全局设置只能从应用程序中的密码限制区域进行设置。

如果发生这种情况,文件将存储在定义的服务器路径中,当应用程序重新启动时,它会尝试访问路径并加载文件。如果路径无法访问,它将使用上次运行的设置并指示无法连接。

现在我仍然需要一个文件锁或阻止用户更改文件并保存它的东西。因为没有锁,用户只能操作 csv 文件,然后在下次重新启动时加载该文件。

我已经尝试使用文件流设置 Fileaccess,但看起来访问标志仅在文件流打开时才有效。

有人知道即使在应用程序关闭后如何锁定文件?或者至少将外部访问设置为只读而不是读/写?

标签: c#wpffile

解决方案


正如所有其他人已经提到的,要么使用文件访问权限,如果这是不可能的(因为管理员总是可以访问文件)使用某种加密。要么使整个文件不可读,要么从内容中计算出一些散列(添加了一些私有盐)并将此散列添加到文件中。

然后,当您在下次重新启动时读取文件时,您会再次重新计算哈希并将其与存储的哈希进行比较。如果匹配,则文件未更改。

但请注意,仍然可能进行重放攻击。用户可以在本地保存旧版本的有效状态文件,然后将其带回给您。

只是为了回答你最初的问题:

不,不可能锁定文件,它只能由您的进程访问。特别是当它位于网络文件夹中时。在这种情况下,服务器决定谁可以访问该文件。


推荐阅读