背景

背景

我有一台 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\ProductsS-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

解决方法

这涉及编辑注册表,并且不基于任何记录的信息......使用风险自负/采取合理的预防措施,例如在运行之前备份您关心的任何内容。

  1. 打开注册表编辑器(WinKey+ R> Regedit> OK
  2. 导航到适当的产品密钥条目;例如HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\66FC8F6438BA7A83992B5AEB05E74E27上述内容。
  3. 右键单击并选择导出;这样您就可以备份该密钥的值。
  4. 删除此项
  5. (对任何其他有此错误的产品密钥重复上述操作)
  6. 重新运行msizap g。现在应该可以正常运行
  7. 双击您在步骤 3 中创建的 *.reg 文件,将该项重新加载到注册表中

希望现在一切都顺利进行,并且解决方法没有破坏任何东西......祝你好运!

相关内容