刚刚尝试安装 cleanmgr 并在全新 2012 R2 安装上运行。像以前一样复制 CleanMgr.exe 和 CleanMgr.exe.mui,但运行时出现错误:程序或功能 \?system32\cleanmgr.exe 无法启动或运行,因为与 64 位版本的 Windows 不兼容
答案1
您需要通过安装该Desktop Experience
功能来启用磁盘清理(请参阅在 Windows Server 2012 中启用磁盘清理实用程序)。命令行界面应该仍然可以通过C:\Windows\CleanMgr.exe
可执行文件使用。
我回到实验室,尝试从 x86抓取CleanMgr.exe
并CleanMgr.exe.mui
WOW64位更新认为可能会解决兼容性问题:
Copy-Item -Path C:\Windows\WinSxS\x86_microsoft-windows-cleanmgr.resources_31bf3856ad364e35_6.3.9600.16384_en-us_f2763474b4405afa\cleanmgr.exe.mui -Destination C:\Windows\System32\en-US
Copy-Item -Path C:\Windows\WinSxS\wow64_microsoft-windows-cleanmgr_31bf3856ad364e35_6.3.9600.16384_none_685740be65e399a2\cleanmgr.exe -Destination C:\Windows\System32
结果如下……
啊。进步的步伐。我看到两个选择。你可以得到进程监控运行并尝试追踪 WOW64 子系统中所有不同的 DLL(可能通过Desktop Experience
在一次性服务器上进行安装),你可以尝试此方法如果您遇到问题,请删除windows.old
目录,或者您可以按照微软官方支持(尽管是误导性的建议)的建议从桌面体验 Windows 功能进行安装。
答案2
我遇到了与 Keith 描述的 W2K12 R2 SP1 服务器相同的问题。我针对此问题的解决方案:
- 安装桌面体验功能。
- 然后,您可以在 SystemRoot\System32\en-US\cleanmgr.exe.mui 和 SystemRoot\System32\cleanmgr.exe 中看到新的“cleanmgr”文件,这些文件比 Winsxs 文件夹中的文件更大
- 将这些文件复制到另一个文件夹,例如 C:\
- 删除桌面体验功能,这将从 system32 中删除 cleanmgr 文件!
- 将 cleanmgr 文件从您的文件夹(步骤 3)复制到已知的 system32 位置(步骤 2)
- 现在您可以运行 cleanmgr.exe
我使用此过程制作 vmware 模板机器,所以我做了一次,所有其他未来的 w2k12r2 服务器都将安装 cleanmgr 文件
答案3
直接从c:\windows\WinSxS
目录复制,虽然曾经支持,但现在不再按原样工作。这似乎是 Windows Server 2012 R2 Update 1 中的一项更改
cleanmgr.exe
在十六进制编辑器中快速查看二进制文件可以发现,C:\Windows\WinSxS\amd64_microsoft-windows-cleanmgr_31bf3856ad364e35_6.3.9600.17031_none_5e3588b0315d2219\cleanmgr.exe
文件不再以所需的魔术头“MZ...”开头,而是以“DCN...”开头,并且文件是很多比扩展版本小。这就是我们得到上述“不支持...”对话框的原因。
这似乎直接导致知识库 2821985改进 #2 - 添加了一项功能,可压缩未使用的二进制文件并分配可用磁盘空间,为 Windows 将来的更新做好准备。
仍在尝试弄清楚如何以编程方式提取/解压缩文件。:^(
答案4
有人好心地提供了一个包含所需文件的 zip 文件,与上述步骤(不包括安装“桌面体验垃圾”)不同,它实际上可以在 Windows Server 2012 R2 64 位上运行。
您可以从作者页面并自行获取下载链接。这是一个 zip 文件,您可以将其解压到系统驱动器上,并将文件放在需要的位置。还有一个适用于 Windows 2008 版本的链接。
为什么像清理硬盘这样简单的事情我们要采取这样的措施,这对我来说是一个谜。
更新:我已经打开Windows Server 用户语音请求点击此处- 如果您认为安装磁盘清理程序很有用,请投票。