Показаны сообщения с ярлыком реестр. Показать все сообщения
Показаны сообщения с ярлыком реестр. Показать все сообщения

суббота, 19 марта 2011 г.

Опасайтесь ключа Image File Execution Options

Это перевод Beware the Image File Execution Options key. Автор: Реймонд Чен.

Опасайтесь ключа реестра Image File Execution Options (ещё). Его силы могут быть использованы во зло так же хорошо, как и для добра.

понедельник, 18 октября 2010 г.

Когда люди имитируют отображение, а не реальные данные

Это перевод When people mimic the display rather than the actual data. Автор: Реймонд Чен.

Я помню один баг, который мы исследовали: он был вызван тем, что ключ реестра был задан, когда он не должен быть задан. Но когда вы смотрели на значение ключа в редакторе реестра Regedit, он говорил "(значение не присвоено)". Почему мы дошли до просмотра этого "значение не присвоено"?

пятница, 15 октября 2010 г.

четверг, 14 октября 2010 г.

Кодирование - это не шифрование

Это перевод Encoding Is Not Encrypting. Автор: Реймонд Чен.

Информация об использовании меню Пуск кодируется (слово, которое я выбрал очень аккуратно, чтобы не ввести в заблуждение) в реестре. И кодирование (encoding), и шифрование (encrypting) предполагают изменение формы данных. Но шифрование предполагает, что восстановление исходных данных будет делом сложным: кодирование этого не предполагает. Шифрование также предполагает, что реализующий алгоритм будет устойчив к атакам на него: опять-таки, кодированию это не нужно.

понедельник, 27 сентября 2010 г.

1.7. Программные идентификаторы

Это перевод Programmatic Identifiers. Цикл: реализация индивидуального формата файлов.

Оболочка использует подключи реестра программных идентификаторов (programatic identifier или ProgID), чтобы ассоциировать тип файла с приложением, и чтобы контролировать поведение ассоциации. Записи ProgID, используемые для файловых ассоциаций, хранятся в ключе реестра HKEY_CLASSES_ROOT.

суббота, 25 сентября 2010 г.

пятница, 24 сентября 2010 г.

1.2: Типы файлов

Это перевод File Types. Цикл: реализация индивидуального формата файлов.

Файлы с разделяемым общим расширением (.doc, .html и так далее) являются файлами одного типа. Когда вы распространяете приложение, которое использует файлы, вы можете использовать существующие, хорошо определённые типы файлов. Например, если вы создаёте текстовый редактор, то вы можете использовать существующий тип файла .txt. В других случаях вы можете захотеть создать новый тип файла.

четверг, 23 сентября 2010 г.

1.1: Регистрация приложений

Это перевод Application Registration. Цикл: реализация индивидуального формата файлов.

Эта статья обсуждает, как приложения могут предоставлять системе информацию о себе, необходимую для задействования некоторых сценариев. Эта информация включает в себя информацию, необходимую для нахождения приложения, действия (verbs), которые поддерживает приложение, и типы файлов, которые приложение может обрабатывать.

воскресенье, 9 мая 2010 г.

Стоимость чтения ключа реестра

Это перевод The performance cost of reading a registry key. Автор: Реймонд Чен.

Реестр - это удобное место для записи постоянных меж-процессных данных единообразным и потоко-безопасным способом. Он перемещается вместе с пользователем, если вы храните данные в HKEY_CURRENT_USER, а индивидуальные ключи могут быть защищены (даже на FAT системах, которые не поддерживают безопасность).

Но это не значит, что операции с реестром даются вам за бесплатно.

суббота, 1 мая 2010 г.

Почему INI-файлы устарели и их заменил реестр?

Это перевод Why are INI files deprecated in favor of the registry? Автор: Реймонд Чен.

Добро пожаловать, читатели Slashdot. Напоминаю, что этот web-сайт предназначен только для развлечения.

Почему INI-файлы устарели и их заменил реестр? Потому что у INI-файлов было много проблем.

среда, 3 марта 2010 г.

Использование SystemParametersInfo для получения настроек интерфейса пользователя

Это перевод Using SystemParametersInfo to access user interface settings. Автор: Реймонд Чен.

Функция SystemParametersInfo даёт вам доступ к различным настройкам пользовательского интерфейса, и это единственный поддерживаемый официально способ получить эти настройки.

Я не буду рассматривать каждую опцию; идите и прочитайте сами. Вот несколько примеров:
  • SPI_GETICONTITLELOGFONT позволяет вам узнать шрифт, который используется для подписей к иконкам; SPI_SETICONTITLELOGFONT позволяет вам установить его.
  • SPI_GETNONCLIENTMETRICS позволяет вам запросить шрифты, которые используются в заголовках окон, меню, строках статуса и сообщениях; SPI_SETNONCLIENTMETRICS позволяет вам сменить их.
А вот некоторые настройки из Панели управления:
  • SPI_SETKEYBOARDDELAY и SPI_SETKEYBOARDSPEED позволяют вам сменить настройки авто-повтора клавиш клавиатуры.
  • SPI_SETDOUBLECLICKTIME позволяет вам сменить скорость двойного щелчка.
  • SPI_SETMENUFADE позволяет вам включить или отключить анимацию выпадения меню.
  • Есть целая серия настроек SPI_SETxxxANIMATION, которые позволяют вам контролировать анимацию различных элементов экрана.
Заметьте, что когда вы используете команды SPI_SET*, вы также должны выбрать, будут ли эти изменения временными (сбросятся после выхода пользователя из системы) или же постоянными. Исторически названный флаг SPIF_UPDATEINIFILE приводит к сохранению настроек в пользовательский профиль; если же вы не указываете его, то изменения в профиль не сохраняются и теряются при logoff-е. Вы должны также устанавливать флаг SPIF_SENDCHANGE, чтобы программы, которые хотят обновить себя при изменениях настроек, смогли бы это сделать.

Тот факт, что у нас существуют как временные, так и постоянные установки, указывает на опасности прямого чтения настроек из реестра. Если текущие настройки являются временными, то они не сохраняются в профиль пользователя (реестр). Функция SystemParametersInfo получает текущие установки, даже если они временные. Например, если вы хотите узнать, анимированы ли меню, а пользователь временно отключил анимацию, то чтение реестра скажет вам, что они являются анимированными, когда в действительности они не анимированы.

Далее, запись настроек в реестр не активирует их до следующей загрузки профиля, потому что это именно то время, когда настройки читаются из реестра. Чтобы применить настройки сразу - вы должны использовать SystemParametersInfo.

Это по-прежнему удивляет меня: почему люди используют недокументированные ключи реестра, когда есть отличный документированный способ для этого. Особенно, когда документированный способ действительно работает, а недокументированный способ - не всегда.

Я помню одно приложение, которое шло напрямую в реестр за недокументированным ключом реестра (я думаю, для получения шрифта заголовка иконки). К несчастью для этого приложения, формат ключа реестра был изменён между Windows 95 и Windows 2000, так что приложение стало вылетать (оно ожидало формат Windows 95). Если бы оно использовало документированный способ получения шрифта, то оно бы продолжило работать, и ему было бы плевать на внутренние изменения реестра. Другими словами, эта программа обошла предпочтительный способ делать вещи, только для того, чтобы загнать саму себя в ловушку.

воскресенье, 21 июня 2009 г.

Опасайтесь не нуль-терминированных строк в реестре

Это перевод Beware of non-null-terminated registry strings. Автор: Реймонд Чен.

Хотя значение хранится в реестре как REG_SZ, это не означает, что данные действительно заканчиваются корректным терминатором. На самом нижнем уровне реестр - просто иерархически организованная база данных имя/значение.

И вы можете соврать, и это может сойти вам с рук.

понедельник, 1 декабря 2008 г.

Длинная и печальная история ключа Shell Folders

Это перевод The long and sad story of the Shell Folders key. Автор: Реймонд Чен.

Когда вы создаёте архитектуру операционной системы, обратная совместимость - это одна из тех вещей, которые вам при этом нужно просто принять. Но когда новые программы начинают зависеть от хаков, созданных для старых программ, вам захочется рвать на себе волосы.