有没有办法全局禁用 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

这是另一种选择电源外壳方法来注释掉本地化资源名称声明桌面配置文件文件:

$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 文件。

如果出现任何问题,输出应该足以恢复已完成的操作。

无保修。

相关内容