БлогNot. 00000023-0000-0010-8000-00AA006D2EA4

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 :)

Попробуем немного расшифровать и пояснить, с чем мы тут имеем дело.

В масдае, то есть, в Вашей 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 тоже намеренно встроена неверная инфа о некоторых классах и интерфейсах.

В общем, если Вы - параноик, это ещё не значит, что за вами не следят...

 Какой на самом деле главный баг в Windows? Узнай в конце статьи, перейдя по ссылке на страницу оригинала

11.07.2011, 13:35 [13116 просмотров]


теги: windows ошибка софт юмор реестр миф

К этой статье пока нет комментариев, Ваш будет первым