只是为了澄清,我想要一种编程方式告诉Windows我创建的文件应该是不可移动的。这是可能的吗?如果可以,我该如何做?
谢谢,
Terry
没有文件属性可以将其标记为不可移动。我认为,唯一的方法是在某些其他进程打开文件(读或写,我甚至不确定是否需要以独占模式打开文件)期间,文件不能在碎片整理期间移动。
老实说,除非您对文件所在磁盘盘片的位置有特定要求,否则我想不出为什么您不希望文件移动。碎片整理通常会导致更快的磁盘访问,这似乎在所有情况下都是可取的 :-)
这通常意味着该文件正在被某个进程使用。如果您正在进行碎片整理,您可能会看到许多系统文件出现此问题。如果该文件应该合法地可移动但卡住了(例如,它被一个在启动时运行但不应该运行的进程所持有),解决问题最有用的方法是删除该文件的所有权限,重新启动计算机,恢复权限,然后删除该文件/运行试图使用它的程序。
我想丑陋的方法是让应用程序在启动时启动,每隔几秒钟检查碎片整理是否正在运行,如果是,则以独占模式打开文件。
这真的很丑陋,除非没有更干净的解决方案,否则我不建议使用它。
Terry,所有的答案都提到了如何防止在碎片整理期间文件变得不可移动。从你的问题中可以看出,你实际上想要使你的个人文件不可移动。请问您能否澄清一下,为什么让您的文件不可移动很有吸引力。
我猜你正在使用Windows自带的碎片整理工具。一些商业软件如DiskKeeper可以移动其中的一些文件(通常是系统文件)。你可以试用它们的试用版本。
Contig可能适合您的目的 http://technet.microsoft.com/en-us/sysinternals/bb897428.aspx
我相当确定我曾经遇到过一些可以以编程方式访问的方法/属性,可以完全满足您的要求。不过那是在NT4时代,我的记忆力不是很好。
如果需要更完整的解决方案,请尝试Raxco的PerfectDisk。虽然它是一款商业产品,但它非常出色,并支持系统文件的启动时间碎片整理。第一次碎片整理比如DiskKeeper要慢,但它是单次碎片整理程序,并支持在驱动器上剩余非常少的空间进行碎片整理。总体而言,它是我见过的最智能的碎片整理程序,支持任何大小的系统。
首先尝试在安全模式下移动(或删除)文件。如果无法移动(或删除),请尝试使用Linux移动(或删除)文件。
但是要小心,如果这些是Windows系统文件,则可能导致Windows无法启动。
一些文件无法移动的原因包括:文件大小过大,文件正在打开/使用中,安全权限不足,被其他计算机访问等等。