00000023-0000-0010-8000-00AA006D2EA4
"Вот вы тут сидите и не знаете, что писька-то совсем по-другому называется!" - гордо заявил родителям пришедший из школы первоклассник Вовочка... о чём это я? Ах да, получил тут письмо о найденном, наконец, человеком источнике всех бед и проблем с Windows... разумеется, оказалось, что злые программисты Microsoft встроили в Windows специальный "генератор багов", который намеренно создаёт системные ошибки. Прочитать "шыдевр" полностью легко в тысячах перепечаток, просто наберите в Яндексе заголовок этой статьи.
Что любопытно - устойчивость данного "баяна", видимо, ей способствует заведомо "конспирологический" характер интервью, да ёще и "загадочные символы" ключа реестра, который нужно изменить. Тем более, что о действительном назначении этого, да и других ключей реестра, получить информацию не так уж легко.
Впервые в широкой прессе эта "правда о Windows" появилась в журнале Upgrade, году этак в 2002 в первоапрельском выпуске рубрики "Must die". Сам Upgrade взял эту уже тогда популярную байку из сетевого фольклора, первоисточник сейчас установить трудно. В дальнейшем, помимо тысяч сетевых перепечаток, байка мелькала и во вполне серьёзных изданиях, например, в книге Б.К. Леонтьева "Microsoft Windows XP SP3. Cкрытые возможности".
Давайте попробуем разобраться, как на самом деле обстоят дела с ключом
00000023-0000-0010-8000-00AA006D2EA4 и за что он отвечает. Помочь в этом может, например,
утилита OLE/COM Object Viewer, которая поставляется вместе с Visual C++ 5.0, 2005, 2008 и выше,
Visual Basic 5.0 и рядом других продуктов. Исполняемый файл утилиты называется
OleView.exe
, у меня она нашлась в папке
C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\
Утилита также может запускаться из Visual Studio командой Tools
, OLE/COM Object Viewer
.
В окне утилиты слева открываем список Interfaces
, находим по алфавиту первую запись с названием
Error
, видим следующее:
Вот он, багогенератор Windows :)
Попробуем немного расшифровать и пояснить, с чем мы тут имеем дело.
В масдае, то есть, в Вашей Windows, используется технология COM (Component Object Model, Компонентная Объектная Модель). Суть её в том, что приложения и части системы, построенные на ней, перестают быть автономными программами, а представляют собой набор взаимодействующих между собой компонентов. Каждый компонент при этом имеет уникальное имя (GUID, Globally Unique Identifier) и может одновременно использоваться многими программами. Компонент взаимодействует с другими программами через интерфейсы — наборы абстрактных функций и свойств. У COM-объекта можно запросить какой-нибудь интерфейс, при этом используются как раз GUIDы, реально они представляют собой 128-битовые числа. Запись 00000023-0000-0010-8000-00AA006D2EA4 - типичный GUID. Помимо GUID'ов используются также более понятные человеку символические идентификаторы вроде "Error" или "Connection".
Получается, что загадочная запись в реестре означает следующее: интерфейс с символическим именем "Error" имеет GUID 00000023-0000-0010-8000-00AA006D2EA4. Этот интерфейс относится к Microsoft DAO 3.6 Object Library, а DAO (Data Access Objects) - это стандартная библиотека поддержки доступа к базам данных, скажем, её может использовать Access из Microsoft Office. Вот краткое описание интерфейса Error:
An Error object contains details about data access errors, each of which pertains to a single operation involving DAO Объект Error содержит детали про ошибки доступа к данным, каждая из которых относится к единичной операции вызванной DAO.
Когда программа, использующая технологию Microsoft DAO, по ходу работы с какой-нибудь базой данных с помощью этой библиотеки сталкивается с ошибкой, она может получить более подробную информацию об ошибке через интерфейс "Error" некоторого объекта. Эта информация может содержать, например, краткое описание ошибки, которое может понять пользователь, и которое можно отобразить на экране.
Замена Error на ErrorFree здесь означает переименование интерфейса Error в ErrorFree. Теперь в любой программе, в которой предполагалось, что этот интерфейс имеет символическое обозначение "Error", это станет невозможным и вызовет ошибку :-)
Так что "отключение багогенератора" действительно создаёт интересную ситуацию - ошибку в механизме обработки ошибок при попытке доступа к информации об ошибках :)
Жаль только, что конечный пользователь обращается к интерфейсам DAO нечасто, и шансы увидеть (точней, не увидеть, мы же отключили вывод сообщений об ошибках) результаты "отключения багогенератора" у него невысоки :)
Кстати, если у Вас всё ещё XP, могу навскидку предложить старую "конспирологическую" фишку, которая сразу покажет, откуда ноги растут.
Запустите редактор Блокнот, наберите в нем строку Bush hid the facts ("Буш скрыл факты"), сохраните и закройте файл, потом откройте снова... об увиденном отпишите :)
В "семёрке" ничего не выйдет, а вот в XP - да.
Ну и касательно OLE/COM Object Viewer - остаётся предположить, что обман Microsoft куда глубже, чем мы думаем, и в утилиту OLE/COM Object Viewer тоже намеренно встроена неверная инфа о некоторых классах и интерфейсах.
В общем, если Вы - параноик, это ещё не значит, что за вами не следят...
11.07.2011, 13:35 [13166 просмотров]