我的 Windows 7 Enterprise 电脑最近经常崩溃,所以我决定以安全模式启动并运行我安装的 TrendMicro 客户端。它在进行完整系统扫描后大约 10 分钟就冻结了,因此本着http://whathaveyoutried.com,我开始逐个扫描每个文件夹。当我扫描到时ProgramData
,AV 因未捕获的异常而失败。然后我下降一级并尝试扫描Application Data
,结果也失败了。当我打开文件夹时,我惊讶地发现又出现了同一个文件夹!
据我所知,这个文件夹循环会无限期地持续下去。(如果你想重新创建它,请记住这ProgramData
是一个隐藏文件夹。)我实际上有点担心这些是系统文件夹,因为这是一台全新安装的计算机。
我想我有三个问题:
- 有其他人见过/经历过这种情况吗?我正在运行 Win7 SP1。
- 我该如何解决这个问题?我运行了
CHKDSK \F
但没有成功(尽管速度非常慢)。 - 无限递归目录的后果是什么?从理论上讲,每个链接都会占用内存,所以我的硬盘上不应该没有可用空间吗?(我还剩下大约 180GB。)我注意到左侧的树形视图只在更深的文件夹中显示“链接文件夹”图标 - 这有什么特别的含义吗?(我用红色圈出了图标或缺少图标。)操作系统如何解决这种异常?最重要的是,如果我选择“展开所有文件夹”会发生什么?:P
马特
答案1
- 关于“我是不是应该没有剩余空间了”:不是,因为它们不是“物理”目录。它们是“计算”目录,也就是说,当你尝试导航到它时,你最终会到达下一个更深的目录。这有点像数学归纳法:你不必一直进行归纳到无穷大,即使假设“让你“ 这样做...
或者这样想:如果你有一个链接列表,其中节点 A 指向节点 B,节点 B 指向节点 C,节点 C 指向节点 B,那么列表中有多少个节点?答案是 3,但如果你天真地尝试跟随节点的next
指针到无穷大,直到找到一个没有下一个指针的节点,那么当你溢出存储节点数量的计数器时,你要么会崩溃,要么会一直数到无穷大(或者直到你用尽时间/耐心/空间来存储计数)。
如果您运行的程序试图浏览整个目录树,并且不支持检测循环连接或循环符号链接,则会出现问题。坦率地说,我认为该程序有问题,因为任何认真尝试遍历整个目录树的程序都需要预测这种可能性并智能地处理它。
您的趋势科技基本上按照我所说的那样执行,即 B 指向 C,C 指向 B 的链接列表。它只是跟随指针,而没有意识到它在两个节点之间跳转,而不是在无限深的目录层次结构中导航。
总体而言:循环文件系统构造——例如目录 A 有目录 B 作为子目录,而目录 B 又有目录 A 作为子目录(实际上 A 和 B 可以是同一个目录)——通常是一种有效但并不常见的现象。它们与选中“只读”复选框的文件、在文件系统层压缩的文件、具有奇怪的自定义 ACL 的文件以及 Office 在打开文档时创建的特殊隐藏文件属于同一类“您不常见的东西”。当程序试图“遍历”任意文件系统时,所有这些类型的文件属性都需要特殊处理和知识。循环构造只是又一个需要程序进行特殊处理的东西,虽然可以接受并且不表示文件系统错误。
答案2
我也有同样的问题,
我认为这些循环引用链接是正常的,但在通常情况下,它们被操作系统隐藏了。不久前,我曾强制更改 C:\ 上所有文件的权限和所有权,我认为在此过程中这些链接已“取消隐藏”。
答案3
我自己在对配置文件进行更改时也遇到了这种情况,也是在 Windows 7 中。我只是通过将数据复制到新创建的配置文件中来避免这种情况。
您的 TrendMicro 只是在无限循环中运行,一次又一次地重新打开指向自己目录的链接……然后就这样崩溃了。