Windows-Server-2012

如何在不安裝桌面體驗的情況下在 Windows 2012 伺服器上安裝磁碟清理?

  • March 17, 2017

問題很簡單,我想在執行 Optimize-VHD cmdlet 之前盡我所能清理/壓縮 VM 的 .vhdx 驅動器。使用 Microsoft 的磁碟清理實用程序非常好。問題是它沒有預設安裝。

官方獲取方式是使用“添加角色和功能”並添加“桌面體驗”功能。有一些不想要的副作用,其中該功能還需要“媒體基礎”和“墨水和手寫”功能。我只想要“磁碟清理”。

“磁碟清理”只需要 2 個文件即可工作(加起來,不到 260KB)

“cleanmgr.exe”用於您的平台,“cleanmgr.exe.mui”用於您的語言環境。它們已經在您電腦上的“%SystemRoot%\WinSxS”下的子文件夾中。

首先,在“%SystemRoot%\WinSxS”文件夾下搜尋“cleanmgr.exe”。您可能會在“amd64”、“wow64”和“x86”文件夾中找到文件。我在我的 Windows Server 2012 Standard x64 安裝中為這兩個文件選擇了“amd64”。

將這 2 個文件複製到以下位置:

  • %SystemRoot%\System32\cleanmgr.exe
  • %SystemRoot%\System32\en-US\cleanmgr.exe.mui

(我假設,如果您使用不同的語言環境,WinSxS 會有更多選擇,並且您必須將 .mui 文件複製到該語言環境的子文件夾。)

從技術上講,你已經完成了。如果您希望它向您顯示它可以清理的所有內容(包括儲存在 WinSxS 中的陳舊 Windows 更新,現在是 Win2012 中的一個選項),請以管理員身份執行“cleanmgr.exe” 。

如果您想要更多“GUI-ness”,請繼續…

要將新的“磁碟清理”放入“開始”菜單,請創建“cleanmgr.exe”文件的快捷方式。將新的快捷方式放在“%ProgramData%\Microsoft\Windows\Start Menu\Programs\Administrative Tools”文件夾中;將其命名為“磁碟清理”。現在,在“開始”菜單中,您只需鍵入“磁碟清理”,您就可以選擇從一開始就以管理員身份啟動它。

要讓“磁碟清理”在磁碟驅動器的“屬性”對話框中顯示為按鈕,您必須更改系統資料庫以添加新鍵和“可擴展字元串值”。創建一個新的 .reg 文本文件並粘貼以下內容:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\cleanuppath]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
 00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,63,00,6c,00,\
 65,00,61,00,6e,00,6d,00,67,00,72,00,2e,00,65,00,78,00,65,00,20,00,2f,00,44,\
 00,20,00,25,00,63,00,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\cleanuppath]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
 00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,63,00,6c,00,\
 65,00,61,00,6e,00,6d,00,67,00,72,00,2e,00,65,00,78,00,65,00,20,00,2f,00,44,\
 00,20,00,25,00,63,00,00,00

十六進製字元串是“%SystemRoot%\System32\cleanmgr.exe /D %c”,以防您想手動添加。對我來說,我只需要添加第一個鍵。第二把鑰匙只是我發現設置所在的另一個地方。僅供參考,系統資料庫中還有其他 2 個地方處理“cleanmgr.exe”,但幸運的是,它們對此並不重要,因為它們使用了一些 ClassID GUID 的東西。

引用自:https://serverfault.com/questions/556613