Есть ли способ глобально отключить LocalizedResourceName (desktop.ini)?

Есть ли способ глобально отключить LocalizedResourceName (desktop.ini)?

Я использую немецкую версию Windows 7, и хотя меня это устраивает (иначе я бы установил английскую версию), мне очень не нравятся локализованные названия папок — я хотел бы видеть настоящие названия папок.

Конечно, я мог бы просто удалить LocalizedResourceNameвсе desktop.ini, но мне интересно, есть ли какой-то параметр реестра, который заставляет Windows просто игнорировать локализованные имена.

решение1

  • В качестве обходного пути обратите внимание, что если щелкнуть в адресной строке, там отобразится полный непереведенный путь.
  • Чтобы избавиться от LocalizedResourceNameавтоматически, установите bash(например, измерзавец) и запустить
    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

Вот альтернативаPowerShellподход, чтобы прокомментироватьLocalizedResourceNameзаявление врабочий стол.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-файл рабочего стола.

Выходных данных должно быть достаточно, чтобы отменить сделанное, если что-то пойдет не так.

Без гарантии.

Связанный контент