有沒有辦法全域禁用 LocalizedResourceName (desktop.ini)?

有沒有辦法全域禁用 LocalizedResourceName (desktop.ini)?

我使用的是德語 Windows 7,雖然我對此很滿意(否則我會安裝英文版本),但我真的不喜歡本地化的資料夾名稱 - 我想看到真實的資料夾名稱。

當然,我可以簡單地LocalizedResourceName從每一個中刪除desktop.ini,但我想知道是否有一些註冊表設定只會導致 Windows 忽略本地化名稱。

答案1

  • 作為解決方法,請注意,如果您按一下網址列,則會顯示完整的未翻譯路徑
  • 為了自動擺脫LocalizedResourceName,安裝一個bash(例如從git) 並執行
    for desktopini in $(find /c/Users -name desktop.ini); do sed -i "/^LocalizedResourceName/d" $desktopini; done
    如果您只想註釋該條目以供以後反轉,請使用
    "s/^\(LocalizedResourceName\)/;\1/"代替
    "/^LocalizedResourceName/d"
    當然,您可以將路徑修改/c/Users為所需的任何路徑,只需記住 msys/mingw 在磁碟機號碼後面使用正斜線而不是冒號。
  • 使用 powershell 可能是類似的方式,但我從來沒有費心去學習,因為我無論如何都使用 bash...這個帖子可能會為該sed部分帶來一個好的開始。或者你只是檢查一下這個答案來自一個基本上重複的問題
  • 最後,請注意,desktop.ini如果資料夾沒有設定係統或唯讀屬性,則完全忽略它

答案2

這是一個替代方案電源外殼註解掉的方法本地化資源名稱中的聲明桌面.ini文件:

$LRN = 'LocalizedResourceName'
gci desktop.ini -Hidden -Recurse -ea silent | ForEach{
    $Content = Get-Content $_ -raw
    If ( $Content -match $LRN ) {
        $Content -replace $LRN, ";$LRN" | Set-Content $_ -force
    }
}

若要建立撤銷腳本,只需交換-replace參數:

$Content -replace ";$LRN", $LRN

答案3

對於任何喜歡 powershell 方式的人來說,這個腳本對我有用:

$desktopinis = gci -Recurse -Hidden . | where { $_.Name -eq "desktop.ini" }

foreach ($ini in $desktopinis) {

    $content = $ini | get-content
    foreach ($line in $content) {
        if ($line -cmatch "^LocalizedResourceName=") {

            $newname = $line.substring(22) # propertyname plus one for the equals sign

            $before = $ini.Directory.FullName
            $after  = $ini.Directory.Parent.FullName + "\" + $newname

            Write-Host ("Renaming '" + $before + "' to '" + $after + "'.")

            Move-Item -Path $before -Destination $after
            Remove-Item -Path ($after + "\desktop.ini") -Force
        }
    }
}

它在目前資料夾中遞歸尋找桌面 ini 文件,並將包含它們的目錄以及其中包含 LocalizedResourceName 的目錄重新命名為其顯示的名稱,然後刪除桌面 ini 檔案。

如果出現任何問題,輸出應該足以恢復所做的事情。

無保固。

相關內容