为什么我无法重命名正在使用的文件

时间:2014-04-13 08:40:36

标签: windows operating-system

我只是想知道为什么我不能重命名一个已打开或正被其他程序使用的文件? 那个目的是什么?

3 个答案:

答案 0 :(得分:4)

问题基于错误的前提,您肯定可以重命名在Windows上使用的常见文件系统上使用的文件。一个进程可以做很少的事情来防止这种情况,只需更改文件上的ACL以拒绝访问。这非常罕见。

锁定文件可保护文件数据,而不是文件元数据。

此功能有很多用途,最值得注意的是ReplaceFile() winapi功能取决于它。即使另一个进程已锁定文件,程序也可以保存文件的方式。

无法做的一件事是重命名文件以将其移动到其他驱动器。因为这需要更多的工作,然后只需更改或移动文件的目录条目。它还需要将文件数据从一个驱动器复制到另一个驱动器。当文件数据被锁定时,这当然会失败。

答案 1 :(得分:0)

因为目前正在使用的文件。您无法更改文件的名称。 当文件打开时,它就会创建进程。您无法在运行时更改进程的名称。 希望问题完全回答

答案 2 :(得分:0)

设计决策导致的行为不那么复杂。当流程F打开文件A时,您必须假定A使用F的名称和有用信息一起工作,例如将其显示给用户,将其传递给其他进程,将其存储在配置,MRU列表中,等等。因此,如果进程B重命名为F,则进程A现在可以正常工作信息无效。因此,不允许这样的操纵通常更安全。