出于好奇心并作为备份尝试,我将整个 PC 注册表导出到几个文本文件中,所有文件都排列在 git 存储库中(以便能够轻松跟踪注册表更改)。
更具体地说,我使用一个简单的 PowerShell 脚本实现了它的自动化:
reg export HKEY_CLASSES_ROOT ./HKEY_CLASSES_ROOT.reg /y
Get-Content ./HKEY_CLASSES_ROOT.reg | Set-Content -Encoding utf8 ./HKEY_CLASSES_ROOT.txt #convert to git friendly encoding
git add *.txt
git commit -m "$($date.ToString("yyyy-MM-dd"))"
到目前为止一切顺利,但是当我开始比较提交时,我注意到了一件奇怪的事情git diff
。
即使我在提交之间没有对系统进行任何更改,注册表中似乎仍然会出现 100 多个不同的更改,在很短的时间内(几分钟),但每次这些变化的数量大致相同:
HKEY_CLASSES_ROOT\Local Settings => 始终有 32 个已更改的注册表项
HKEY_CURRENT_USER\SOFTWARE => 26 次更改
HKEY_LOCAL_MACHINE\SOFTWARE => 27 个更改
HKEY_LOCAL_MACHINE\SYSTEM => 25 个更改
HKEY_USERS => 10 个更改
更改密钥的示例:
HKEY_CLASSES_ROOT\本地设置\软件\微软\的Windows\CurrentVersion\AppModel\SystemAppData\Microsoft.MicrosoftOfficeHub_8wexyz\HAM\AUI\Microsoft.MicrosoftOfficeHub\V1\LU
HKEY_CURRENT_USER\SOFTWARE\Microsoft\OneDrive\帐户
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\DiagTrack\AsimovUploader
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W32Time\SecureTimeLimits
HKEY_USERS\S-1-5-21-xyz-1001\SOFTWARE\Microsoft\OneDrive\帐户
改变的值的示例如下所示git diff
:
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W32Time\SecureTimeLimits]
-"SecureTimeEstimated"=hex(b):6d,a3,54,d2,b8,3b,d8,01
-"SecureTimeHigh"=hex(b):6d,0b,19,34,c1,3b,d8,01
-"SecureTimeLow"=hex(b):6d,3b,90,70,b0,3b,d8,01
+"SecureTimeEstimated"=hex(b):8a,2e,04,38,ba,3b,d8,01
+"SecureTimeHigh"=hex(b):8a,96,c8,99,c2,3b,d8,01
+"SecureTimeLow"=hex(b):8a,c6,3f,d6,b1,3b,d8,01
我知道其中一些键包含日期(例如 LastUpdate),但为什么每次导出注册表时,即使在很短的时间间隔内,这么多键(100 多个)都不同?感觉其中一些更改只是随机值,而不是计时器。
这是正常的吗?我正在运行 Windows 10 Professional。
答案1
Windows 持续报告其正在做的事情,注册表是其最常用的机制之一。
例如,注册表是资源监视器显示的信息的主要来源之一。您可以在文章中找到技术细节 关于性能计数器。这样的计数器非常多,其中许多计数器每秒都会改变多次。
然而,性能并不是唯一不断变化的信息——一些驱动程序还会不断更新注册表中的状态和数据。
但请放心,一直进行如此多的变化是很正常的,这并不被视为性能问题。