Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Windows 綜合教學 >> 關於 Windows

Win10 桌面圖示重開機後自動排列位置重置?修改註冊表 CLSID 權限與 InProcServer32 數值徹底解決

編輯:關於 Windows

Windows 10 使用者常遇到精心排列的桌面圖示在重開機、登出/登入、或更新後自動回到預設排列 (靠左對齊、自動排列),甚至開啟「自動排列圖示」核取方塊無法取消。根因為 HKEY_CLASSES_ROOT\CLSID\{42aedc87-2188-41fd-b9a3-0c966feabec1}\InProcServer32 註冊鍵值被修改為錯誤的 DLL 路徑 (windows.storage.dll 位置錯誤) 或權限不足導致 Explorer 無法正確寫入圖示位置資訊。透過修正權限並修正數值即可永久解決。

問題現象

  • 桌面圖示位置、排列方式無法保存。
  • 右鍵桌面 → 「檢視」→ 「自動排列圖示」取消勾選後,重整/重開機又自動勾選。
  • 圖示間距、對齊網格設定失效。

修復步驟 (64 位元系統完整流程)

步驟 1:開啟登錄編輯器並取得權限

  1. Win+R → regedit → Enter。
  2. 導覽至:
    HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{42aedc87-2188-41fd-b9a3-0c966feabec1}\InProcServer32
  3. 右鍵 InProcServer32 → 「權限」→ 「進階」→ 「變更」擁有者 → 輸入 Administrators → 「檢查名稱」→ 確定 → 勾選「取代子容器和物件的擁有者」→ 套用。
  4. 回到權限視窗,選擇 Administrators → 勾選「完全控制」→ 確定。

開啟 regedit

權限設定進階

變更擁有者 Administrators

取代子容器擁有者

Administrators 完全控制

權限設定完成

步驟 2:修正 64 位元註冊鍵數值

  • 在同一機碼下,雙擊 (預設) 字串值 (REG_EXPAND_SZ)。
  • 將數值資料改為:
    %SystemRoot%\System32\windows.storage.dll
    (注意:64 位元系統為 System32,非 System64)
  • 確定儲存。

修正 64 位元 InProcServer32 數值

步驟 3:修正 32 位元註冊鍵數值 (同樣重要)

  • 導覽至:
    HKEY_CLASSES_ROOT\CLSID\{42aedc87-2188-41fd-b9a3-0c966feabec1}\InProcServer32
  • 同樣取得權限 (步驟 1)。
  • 修正 (預設) 數值為:
    %SystemRoot%\System32\windows.storage.dll

步驟 4:重新登入或重開機驗證

登出並重新登入,或重新開機。桌面圖示位置、排列設定應能正常保存,「自動排列圖示」核取方塊可正常切換。

原理說明

CLSID {42aedc87-2188-41fd-b9a3-0c966feabec1} 對應 Shell Folder View 介面,負責桌面/資料夾檢視設定 (排列、分組、篩選、圖示位置) 的持久化儲存。InProcServer32 指定實作此介面的 DLL。正確路徑為 %SystemRoot%\System32\windows.storage.dll。若路徑錯誤 (如指向不存在的 System64) 或權限不足導致無法載入/寫入,Explorer 會退回預設行為 (自動排列、不保存位置)。

32 位元系統 / 僅修正單一機碼的情況

32 位元 Windows 僅需修正 HKEY_CLASSES_ROOT\CLSID\{...}\InProcServer32 一組機碼。若僅修正 64 位元系統的 Wow6432Node 而未修正原生 64 位元機碼 (或反之),32 位元/64 位元混合環境下仍會出現問題,建議兩組皆修正。

PowerShell 一鍵修復腳本 (管理員執行)

$clsid = "HKEY_CLASSES_ROOT\CLSID\{42aedc87-2188-41fd-b9a3-0c966feabec1}\InProcServer32"
$clsid32 = "HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{42aedc87-2188-41fd-b9a3-0c966feabec1}\InProcServer32"
$correct = "%SystemRoot%\System32\windows.storage.dll"

foreach ($path in $clsid, $clsid32) {
    if (Test-Path $path) {
        Set-ItemProperty -Path $path -Name "(Default)" -Value $correct -Type ExpandString
        Write-Host "Fixed: $path"
    } else {
        Write-Warning "Path not found: $path"
    }
}
# 重新啟動 Explorer 立即生效
Stop-Process -Name explorer -Force
✅ 核心重點: 權限修正 + 兩組機碼 (Wow6432Node + 原生) 皆設為 %SystemRoot%\System32\windows.storage.dll。單改數值不給權限會存取被拒;單給權限不改數值路徑仍錯誤。
Copyright © Windows教程網 All Rights Reserved