我可以覆盖当前由其他用户打开的文件

时间:2011-05-04 23:32:17

标签: .net vb.net file-io

我有几个文件,我必须通过VB.net编写的过程定期更新。 这些文件位于服务器上,是许多用户可以访问的域的一部分。永远不应该写这些文件,因为它们仅供参考。我需要能够覆盖其中一些,即使用户打开它们也是如此。是否有可能做到这一点?目前文件权限未设置为只读,但只要运行进程的用户仍有权覆盖它们,我就可以这样做。

更新:thx为您的回复。文件是pdf,通过从Windows文件资源管理器中单击它们打开。当用户只是在Windows资源管理器中选择了文件时,也会发生这种情况。

3 个答案:

答案 0 :(得分:2)

这取决于用户打开文件时使用的共享模式。有关详细信息,请参阅FileShare枚举(某些处理文件的重载可以接受)。

答案 1 :(得分:0)

有时当另一个用户打开一个文件进行阅读而你无法覆盖它时,仍然可以重命名该文件。因此,如果您发现写入操作因现有锁定文件而失败,您可以尝试将现有文件重命名为临时文件名,然后编写新版本。稍后您可以尝试使用临时文件名删除旧版本。

答案 2 :(得分:0)

如果您尝试修改共享文件并且网络上的其他人打开了该文件,您的代码将生成错误。

但是如果你把try catch块和catch语句忽略了"访问路径...."信息。您的更新声明将成功完成。

例如:

try
{
    .
    .
    .
    your update statement here
    .
    .
}
catch (Exception ex)
{
    if (ex.Message.IndexOf("Access to path") < 0)
        throw ex;
}