Русский фонт в консольных программах Windows 7


 

   Неожиданно для себя наступил на грабли… Вот что значит никогда не работал с Vista! Запускаю Powershell, выполняю команду dir и вместо русских букв в наваниях файлов вижу вопросики. Система полностью английская. Включать русскую локаль? С чего бы вдруг?… Артем Проничкин и Василий Гусев научили меня, что надо поменять шрифт в свойствах окна. По умолчанию там стоит не TruType фонт “Raster Fonts”!!! (Кто бы мог подумать! Если бы знал – обязательно зарегистрировал как баг в программе русской беты.) Операция смены фонта через свойства заголовка окна простая, но как оказалось не совсем… Неожиданно после применения новых настроек я получил вот такое сообщение:

clip_image001

   При этом настройки к окну применились – видно новый фонт, размер и русские буквы отображаются, но при последующем запуске остались старые настройки.

   Понятно прав не хватает. Только прав на что? Пользователь администратор, UAC включен. Запускаем Powershell с повышенными правами и меняем свойства – ошибок нет, настройки применились и при последующем запуске остались как при повышенных правах, так и обычных. Интересно!

   (Полезно сделать настройки по умолчанию для остальных консольных программ, чтобы не настраивать каждую из них отдельно. На консольном окне открываем свойства, Defaults, ставим TrueType фонт, применяем. Проверяем – настройки по умолчанию сохранились даже без повышенных прав. )

   Пробуем поменять настройки фонта для cmd.exe — никаких запросов на повышение прав, а настройки применились!

   Осталось понять, в чем отличие: почему в случае с Powershell нужны повышенные права, а в случае с cmd.exe нет. Обе программы лежат в системных папках. Но туда ничего не пишится при этой операции, а все настройки хранятся в реестре в разделе пользователя (HKEY_CURRENT_USER\Console), где он имеет полные права. В меню «Start» обе программы находятся в разделе Accessories. Чудо?

   Запустил утилиту Руссиновича Process Monitor. Оказалось в случае с Powershell выполняется попытка создать/изменить ярлык по пути C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Windows PowerShell\Windows PowerShell.lnk

   При модификации свойств окна cmd подобной попытки нет. Почему? Не знаю. Открываем свойства ярлыка, там путь C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Accessories. Теперь понятно, что ярлык Powershell лежит в системной папке меню, а ярлык cmd.exe в пользовательской – отсюда и требование к повышенным правам.

   В общем ничего страшного нет, но некоторое неудобство для пользователя может возникнуть. По идее вместо окна ошибки, я должен был получить приглашение UAC. С другой стороны есть еще консольные программы, которые прописаны в системной, а не пользовательской, части меню “Start”? Стандартных программ нет (Если только вы сами что-то поставите себе или пользователям. Хотя там могут оказаться «устаревшие» программы (несовместимые с Windows 7 и Vista). А в остальных ярлыках и менять нечего.

   С другой стороны хочется, чтобы все работало «из коробки»: такие мелкие неприятности портят впечатление от хорошей вещи. Поэтому при случае я попробую зарегистрироать кейс на сайте Connect с предложением разработчикам Windows 7 изменить фонт по умолчанию для консольных программ на TrueType фонт.

 

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: