![如何在 Windows 7 中禁用 Windows 文件保护以覆盖 shell32.dll](https://linux22.com/image/1418884/%E5%A6%82%E4%BD%95%E5%9C%A8%20Windows%207%20%E4%B8%AD%E7%A6%81%E7%94%A8%20Windows%20%E6%96%87%E4%BB%B6%E4%BF%9D%E6%8A%A4%E4%BB%A5%E8%A6%86%E7%9B%96%20shell32.dll.png)
我正在尝试替换 Windows 7 上的 shell32.dll 来自定义一些图标(我知道风险,这个问题与此无关)。
迄今为止的尝试:
1.我使用的是 Windows 7 Home Premium,它没有自带组策略编辑器,所以我使用此方法添加并且成功了。然后我遵循本指南禁用 Windows 文件保护。
我使用命令提示符启动了安全模式。在组策略编辑器中启用“不保留文件附件中的区域信息”后,我运行了复制命令,并表示使用自定义的 shell32.dll 覆盖系统 32 文件夹中的 shell32.dll,但访问被拒绝。我以为禁用区域信息会停止 WFP 并允许我覆盖,但没用。
2.请注意,我已尝试通过转到 HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ Winlogon 从注册表禁用 WFP,如所述这里但由于某种原因,SFCDisable 根本不存在。
3.还请注意,我已经取得所有权并授予自己对 shell32.dll 的完全管理权限,但它仍然不允许我覆盖,我认为这是 WFP 的超级保护并阻止了我的覆盖尝试。
4.我取得了一些进展,通过以管理员身份运行提升的 cmd.exe,我没有被拒绝访问 shell32.dll,但是我无法覆盖它,因为它正在使用中。我运行 tasklist /m 来查看哪些进程正在使用 shell32.dll,令人惊讶的是,没有一个进程正在使用它。似乎 shell32.dll 根本没有被使用,但是我仍然无法覆盖它,因为 windows 一直告诉我它正在使用中。
5.奇怪的是,我被允许将系统 32 中的 shell32.dll 重命名为其他名称,然后复制我自定义的 shell32.dll(作为覆盖的一种解决方法),但似乎 Windows 会自动用原始版本替换我的自定义 dll - 复制到系统 32 后,我立即用 Resource Hacker 打开它,发现我更改的所有图标都恢复了。重命名后的原始图标也仍然在我的副本旁边。
6.令人惊讶的是,即使从 USB 上的 Linux 启动以删除 shell32.dll 并复制我自己的自定义版本也不起作用。我怀疑 Windows 在之后启动时检测到了更改并再次恢复了原始 shell32.dll。
最新想法:
我可以替换 system32 中的 shell32.dll 吗?也可以在 Windows 保存恢复备份的任何地方替换它吗?
答案1
转到“C:\Windows\System32”,右键单击 shell32,单击属性,然后单击“安全”选项卡。单击高级并将权限更改为管理员的完全控制。默认情况下,它是 TrustedInstaller,您需要将自己添加到可以编辑 shell32 的人员列表中。完成后,您将能够覆盖 shell32。
原因是默认情况下 C:\Windows 中的所有内容都被阻止,微软决定阻止覆盖以防止新手弄乱他们的电脑。
答案2
如果您尝试上述方法失败,您可以使用 Linux Live CD 或 USB 启动不同的操作系统,以便能够覆盖该文件。我不知道您是否熟悉 Linux,但它对于访问原始操作系统阻止的文件或从不稳定或损坏的操作系统中拯救文件非常有用。
答案3
您还可以尝试使用 Linux Live CD 或 USB 发行版(即 ubuntu、wifislax,甚至 hiren 的启动 CD)从外部访问您的硬盘。此方法允许您的计算机直接从 CD 或 USB 启动,在您的 RAM 内存上创建一个临时虚拟硬盘。这样,您就可以不受任何限制地访问您的硬盘和文件,因为操作系统不会使用它来工作。也许我会推荐尝试 Hiren 的启动 CD。您可以在官方网站上免费下载它,它非常容易使用