我有一台 50GB 硬盘的电脑,硬盘几乎满了(我不会升级 C 盘,因为这是公司电脑)我刚刚检查了一下,发现目录C:\Windows\Installer
占用了更多的空间。我尝试使用 msizap.exe 删除不需要的文件,但一直出现此错误:
MsiZap V 5.0
Copyright (c) Microsoft Corporation. All Rights Reserved
MsiZapInfo: Performing operations for user S-1-5-21-2700949330-2022528980-61785034-4992
Removing orphaned cached files.
Error opening 66FC8F6438BA7A83992B5AEB05E74E27\InstallProperties subkey of Products key for S-1-5-18 user. Error: 2.
Error opening 9AC087DE786021C34B9333962F4249F1\InstallProperties subkey of Products key for S-1-5-18 user. Error: 2.
FAILED to clear all data.
我现在能做什么?
答案1
背景
该错误是由于预期的注册表路径不存在而引起的。
例如错误:Error opening 66FC8F6438BA7A83992B5AEB05E74E27\InstallProperties subkey of Products key for S-1-5-18 user. Error: 2.
该错误不会告诉您完整的注册表项路径;但会提供缺少条目的用户的 SID;在本例中S-1-5-18
(即Local System
帐户)。
查看注册表HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products
(S-1-5-18
如果不同,则用错误中的相关 SID 替换)我们会看到许多子项。
如果我们查看这些子项中的任何一个,我们很可能会看到另一个子项InstallProperties
。但是,对于错误消息中具有 GUID 的子项,该InstallProperties
子项不存在。
$userSid = 'S-1-5-18'
$productId = '66FC8F6438BA7A83992B5AEB05E74E27'
$path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData'
$path = Join-Path -Path $path -ChildPath $userSid
$path = Join-Path -Path $path -ChildPath 'Products'
$path = Join-Path -Path $path -ChildPath productId
Get-ChildItem -Path $path
# Note that InstallProperties is not listed
解决方法
这涉及编辑注册表,并且不基于任何记录的信息......使用风险自负/采取合理的预防措施,例如在运行之前备份您关心的任何内容。
- 打开注册表编辑器(
WinKey
+R
>Regedit
>OK
) - 导航到适当的产品密钥条目;例如
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\66FC8F6438BA7A83992B5AEB05E74E27
上述内容。 - 右键单击并选择导出;这样您就可以备份该密钥的值。
- 删除此项
- (对任何其他有此错误的产品密钥重复上述操作)
- 重新运行
msizap g
。现在应该可以正常运行 - 双击您在步骤 3 中创建的 *.reg 文件,将该项重新加载到注册表中
希望现在一切都顺利进行,并且解决方法没有破坏任何东西......祝你好运!