重命名 Windows 文件夹中的 dll

重命名 Windows 文件夹中的 dll

我需要重命名 Windows 7 机器上的某个 dll(准确地说是 comctl32.dll),以便用该文件的另一个版本替换它。

我试过:

  1. [在:右键单击,属性,安全,权限,高级,所有者] 将所有者更改为当前用户,并且 [在:右键单击,安全] 将所有可能的权限授予当前用户。尝试过 [右键单击,重命名] - 无法重命名,访问被拒绝。
  2. 启动管理员 cmd(提升权限),并使用强制:

    takeown /f comctl32.dll
    icacls "comctl32.dll" /grant (current user):F
    rename comctl32.dll comctl32.old 
    

    权限被拒绝。

  3. rename comctl32.dll comctl32.old这让我很生气,所以我以系统用户身份启动了一个 shell(按照 [1] 中概述的步骤操作),并尝试使用此 shell重命名文件。结果再次出现权限被拒绝的情况。

我以为系统外壳基本上给了我上帝模式,所以这真是令人沮丧!有人对如何重命名此文件或是什么拒绝我访问有什么建议吗?我完全不知所措!

[1]http://blogs.technet.com/b/askds/archive/2008/10/22/getting-a-cmd-prompt-as-system-in-windows-vista-and-windows-server-2008.aspx

//编辑:
现在我也尝试了 Unlocker 工具。它无法重命名文件,但承诺在重启后尝试重命名。我重启了系统,但我的老朋友仍然没有改名。

//编辑 2:
根据反对票和评论,我想为有同样问题的其他用户添加一条警告。只有当您知道自己在做什么以及为什么要这样做时才这样做。否则,您的系统可能会崩溃。事实上,
我确实知道我在做什么:我需要替换已经损坏的文件。我不知道的是如何做到这一点。所以没有必要在这里提到危险,也没有必要仅仅因为它而反对这个问题可能对系统完整性是危险的。事实上,仅仅使用一个系统最终都会对其完整性造成威胁——为什么要因为同样的性质而惩罚一个合法的问题呢?

答案1

您无法访问它(无论您的权限如何),因为 Windows 本身正在使用它来运行。

从另一个操作系统(例如,Linux LiveCD 或 Windows 安装盘)启动并从那里重命名。

警告:这是一个非常糟糕的主意,可能会导致您的 Windows 无法启动。请确保先进行完整备份。

答案2

如果该文件正在被内核使用,那么你必须先将其从内存中卸载,然后才能重命名它。例如,使用 Windows 恢复控制台来重命名它。

如果它未被进程使用,那么您可能能够重命名它,但是 Windows 文件保护可能会使用原始名称进行复制,或者将其重命名。

部分禁用 Windows 文件保护的最快方法是您必须删除以下文件:

C:/windows/system32/restore/filelist.xml

我建议您 - 除非是在操作系统的测试安装中先备份您想要重命名的文件,否则您也可以从 Windows CD 上的二进制文件中展开它:

expand -r filename.dl_ C:/windows/system32

这将在 system32 中创建 filename.dll,显然您必须用 dll 的文件名替换 filename。

另外,您可以使用 debug.exe 禁用 Windows 文件保护,但这种方法风险更大,而且需要大约半个小时

相关内容