NTUSER.DAT 和 UsrClass.dat 文件数以千计,为什么可以删除?我可以删除吗?

Ant*_*ony 14 windows-server-2008 user-profile windows-registry

我注意到我的 Web 服务器 2008 Xen VM 逐渐失去可用空间 - 虽然比正常使用时要多,并决定进行调查。

有两个问题区域:

*C:\Users\Administrator\ (6,755.0 MB)*

with files: 

NTUSER.DAT{randomness}.TMContainer'0000 randomness'.regtrans-ms
NTUSER.DAT{randomness}.TM.blf
Run Code Online (Sandbox Code Playgroud)

C:\Users\Administrator\AppData\Local\Microsoft\Windows\ (6,743.8 MB)

with files

UsrClass.dat{randomness}.TMContainer'0000 randomness'.regtrans-ms
UsrClass.dat{randomness}.TM.blf
Run Code Online (Sandbox Code Playgroud)

据我所知,这些是注册表更改的及时备份。如果是这种情况,我可能无法理解为什么会有 10000 多个更改。(这是每个文件夹位置有多少文件,每个文件夹总共超过 20,000 个。)

这些文件使用了将近 15GB 的空间,我想删除它们,我只是想知道我可以删除它们。但是,我需要了解为什么要创建它们,以便将来避免这种情况。

任何想法为什么会有这么多?有什么方法可以检查修改的内容吗?

  • 它们是通过登录尝试创建的吗?
  • 它们是否与 Web 服务器的日常使用有关?
  • 等等等等

Hop*_*00b 8

它们不是注册表更改的备份,实际上,它们是注册表更改之前的更改。.tmp本质上是一种用于注册表更改的文件。

作为防止注册表损坏的保护措施,这在 Windows 中曾经是一个相当普遍且非常讨厌的问题,当请求更改注册表时,较新版本的 Windows 所做的是在执行任何操作之前将请求的更改写入文件。(对于用户配置单元中的更改,这些文件采用 的形式NTUSER.DAT{GUID}.TMContainer####################.regtrans-ms,并按顺序编号 - 返回足够远的地方,您应该会看到一个00000000000000000001文件。)一旦 Windows 确定将更改写入注册表是“安全的”,它就会这样做,然后,它将验证是否已进行更改,届时它将删除文件并转移到其他操作系统任务。当此过程中的某些内容失败时,您最终会收集这些文件。

很明显,在您的情况下,该过程中的某处无法正常工作。我敢打赌,如果您查看服务器,Event Logs您会看到大量关于此的错误,以注册表被锁定或无法将更改写入注册表的事件形式出现。(可能沿着Unable to open registry for writing或的路线Failed to update system registry)。这些可能表明存在严重问题,也可能表明某些 PITA 程序希望在每次启动但没有权限时将更改写入注册表。

更改正在写入但文件无法删除的可能性也较小,如果文件上的锁定句柄未正确终止,或者SYSTEM具有写入权限但缺乏删除权限,则会发生这种情况那些文件夹位置。

它可能有助于跟踪源以对这些文件进行快速的 md5 总和(或类似的),以查看它们是否全部或大部分相同(这表明相同的更改无法一遍又一遍地写入注册表),或者如果有很多变化,这更有可能表明存在严重问题 - 许多进程无法写入注册表,或者有问题的用户配置文件已损坏。

完成对它们的分析后,可以安全地删除在上次系统启动之前创建的任何这些文件.blf.regtrans-ms文件。它们不可能(或应该)写入注册表,因此它们是垃圾。

至于什么,正是创造它们,这是你必须自己追踪的东西,因为它几乎可以是任何东西。每次访问站点时,Web 代码中的某些内容可能会尝试编写注册表更改,但由于缺乏权限而失败(我当然见过更愚蠢的事情),它们可能是由用户登录和后续生成的活动试图写入注册表但缺乏权限,如前所述,它们甚至可能正在正常创建和执行,但由于某种原因无法按预期删除。

检查您的所有日志,尤其是您Event Logs和 IIS 日志中是否存在与注册表相关的错误,以缩小范围并找出导致这种情况的原因。