и пробить по тамошнему поиску имя "rundll32.exe". И - о ужас! - оказалось, есть вирус, создающий на заражённом компе файл с таким именем! Но антивирус Titanus'а молчал... (а аверов было два: KAV и Dr.Web)
Тут уже Titanus вспомнил о том, что как-то в Сети наткнулся на сайт некоего Adrax'а, лихо крошащего вирусы в капусту, и обратился напрямую ко мне. Результат не заставил себя ждать:)
Прежде всего, я сообщил Titanus'у, что файл с именем rundll32.exe есть в любой уважающей себя Windows-системе, а в WinXP он должен располагаться в c:\Windows\system32.Если же файл с таким именем будет расположен где-то кроме этой папки, то, скорее всего, это будет злобная малварь
Необходимо также сказать пару слов про rundll32.exe... Этот файл необходим для запуска динамических библиотек как приложений. Непонятно? Попытаюсь объяснить получше...
Если вы возьмёте файл с расширением .exe и дважды щёлкнете по нему мышкой, то этот файл запустится и выполнит какое-либо действие на вашем компе (или, если файл повреждён, выдаст ошибку, что не является исполняемым файлом). То же самое будет, если дважды щёлкнуть по файлу .scr
А вот если дважды щёлкнуть по файлу .dll или .sys, то ничего подобного не произойдёт. Почему? Ведь все эти четыре типа файлов являются PE (Portable Executable - переносимыми исполняемыми)? Да потому что .exe и .scr - это ИСПОЛНЯЕМЫЕ файлы! Двойным кликом мы даём им право исполнить свой код на процессоре (или на виртуальной машине, если язык, на котором запрограммирован сей файл, к тому располагает). Файлы .sys - это драйверы, а .dll - динамические библиотеки, и никто им запускаться не разрешал
На самом деле разница между ними довольно условна. В .exe-шник можно запихнуть и драйвер, и библиотеку, и скринсейвер. А .dll-ку можно (в целях отладки или ещё зачем-нибудь) запустить на исполнение - с помощью того самого rundll32.exe
На моей машине в данный момент запущена одна копия rundll32.exe, которая исполняет nvmctray.dll - библиотечку, установившуюся вместе с драйверами видеокарты nVidia и обеспечивающую красивый интерфейс для управлениями опциями дисплея
Titanus провёл поиск в системных папках, нашёл rundll32.exe в system32, а также кучу записей с этим именем в папке Prefetch (ну, это и понятно: Prefetch содержит предпочтительные настройки для любого мало-мальски часто запускаемого приложения - чтобы оно загружалось быстрее). Попутно выяснилось, что такая фигня с его компом произошла после инсталляции какого-то левого скринсейвера. Остальные посетители форума не могли дать иного совета, кроме как переустановить ОС, Titanus предполагал наличие на компе вируса, я же погрузился в раздумья
Подобная картина не соответствовала обычным симптомам смерти процесса Explorer.exe - тогда бы не было видно заголовков свёрнутых окон. По поводу вируса: rundll32.exe из system32 малварью быть не мог... а вот запускаемая им .dll-ка - вполне! Но тогда она должна была палиться в свойствах процесса rundll32.exe и в автозагрузке. Я посоветовал Titanus'у скачать Process Explorer и Autoruns от Марка Руссиновича. Titanus прислал следующий скриншот:


Ага! Вот и она - .dll с "левым" именем, запущенная из временной папки и не замеченная антивирем! Я посоветовал Titanus'у смело удалить её, и - о чудо! - проблема исчезла!
Мораль: если с системой творится что-то странное, если запускаются новые неизвестные вам процессы - посмотрите сначала, что и откуда запущено. Ручной аудит всегда превосходит по возможностям любую автоматику
Страшный вирус "Чёрный прямоугольник"
Итак, на том же форуме чувак под ником hott 22 поделился вот какой проблемой: в корне его диска C возникал файл grab00000.jpg разрешением 560x320, содержащий в себе лишь чёрный прямоугольник... Зловеще, не правда ли? Вот-вот... И сочувствующие его беде форумчане тут же принялись советовать бедняге провериться на вирусы, а то и форматнуть винчестер - для надёжности:)
Читатель, проведи эксперимент: запусти в каком-либо медиаплеере (пофигу - WinAmp, LightAlloy, WMP) просмотр фильма. Затем нажми клавишу PrintScreen на клавиатуре, открой любой растровый графический редактор (пофигу - Paint, Corel PHOTO-Paint) и вставь туда находящийся в буфере снимок экрана. При условии, что окно медиаплеера не закрыто, графический редактор будет проигрывать видео в своём окне!
Да что там PrintScreen... Я снимал окно медиаплеера скринграббером SnagIt - там было то же самое: в окне предпросмотра захваченного фото проигрывалось видео. Да и с любым скринграббером такая же фишка получается
Но независимо от того, каким образом вы получили скриншот фильма, при его сохранении вы получите ЧЁРНЫЙ ПРЯМОУГОЛЬНИК!!!
А теперь прекратим мистификацию и поразмыслим - отчего так получается? Зайдите в раздел Assembler и прочтите статью "Чудо-курсор" - там кое-чего говорится о GDI - интерфейсе, позволяющем выводить графику на различные устройства
Общая идея такова: у каждого используемого для вывода графики устройства (пофигу - монитор, принтер, плоттер) есть контекст, служащий как бы альбомным листом для рисования. Соответственно, чтобы вывести кадр фильма, нужно получить контекст дисплея, нарисовать на нём кадр и вывести на экран. Всё довольно просто и давно уже отработано до мелочей. И PrintScreen, и скринграбберы работают с контекстом дисплея, снимая с него скриншоты. Но почему же они не могут снять скриншот с фильма??
GDI - это хорошо. Хорошо потому, что просто и легко. Научиться писать программы с использованием функций GDI/GDI+ можно очень быстро, но...
GDI - это плохо. Плохо потому, что для такой простой задачи, как вывод изображения, приходится нагружать процессор. Неужели видеокарта с этим не справится? Справится, ещё как...
MicroSoft давным давно разработали ActiveMovie, сейчас именуемую DirectShow - часть графического API DirectX, позволяющую выводить видео силами самой видеокарты при минимальной помощи со стороны процессора. Выглядит это так: видеокарта получает от процессора созданное средствами GDI изображение Рабочего стола Windows, окон приложений и пустого(!) окна медиаплеера. А содержимое окна медиаплеера (кадр фильма), не подвергаясь прорисовке средствами GDI, поступает напрямую в видеопамять. Затем видюха, используя преобразователь со странным названием RAMDAC, наложит одно изображение на другое и выведет то, что мы увидим на дисплее. Здорово, правда? Такая фигня называется "вывод видео в оверлей" или "аппаратное ускорение видео" и поддерживается любым современным медиаплеером. Но - до кадра в оверлее не дотянешься функциями GDI, поэтому, если вам необходимо снять скриншот с фильма, отключите аппаратное ускорение в свойствах медиаплеера или используйте встроенную в медиаплеер функцию сохранения кадра (в LightAlloy и PowerDVD она точно есть, в остальных - не знаю)
Итог наших размышлений: вирусы здесь не при чём - это бажит какой-то медиаплеер или скринграббер, снимая скриншот, когда его не просят и не выключая при этом аппаратного ускорения видео. Насколько мне известно, снимки с именами grab00000.jpg, grab00001.jpg и т.д. любит делать WMP 11, но это не единственный кандидат. Разумеется я поспешил успокоить hott 22 и изложил ему своё умозаключение
Мораль: если с твоим компом творится что-то непонятное, не спеши валить всё на вирусы - возможно, глючит ненастроенное или хреново настроенное ПО
Винчестер Karglak'а
Жёсткий диск (винт, винч, винчестер, HDD, хард) - пусть не самая дорогая, но очень важная железяка внутри системника. С винчестера загружается ОС, с него стартуют программы, на нём хранятся важные данные. Поэтому любой компьютерщик мечтает о быстром и надёжном винте
По поводу надёжности... Винчестеры боятся наведённых магнитных полей, механических повреждений, перепадов температур. Всё это чревато потерей (зачастую безвозвратной) важной информации, поэтому при обращении с этим устройством следует проявлять особую осторожность
По поводу быстроты могу сказать следующее: "узкое место" любого винчестера - это скорость записи данных на магнитные пластины. Поэтому увеличение размеров буфера жёсткого диска, смена интерфейса (морально устаревшего IDE на модный SATA) и прочие подобные меры не решат этой проблемы. Другое дело - повышение ёмкости пластин и увеличение скорости вращения шпинделя...
Это была присказка, а теперь - собственно сказка. Пожаловался мне как-то Karglak, что винчестер его бажить начал: разбит он на три раздела (C, D, E), но временами при загрузке Windows видит всего два из них. И такая фигня всё чаще происходит
Поинтересовался я у Karglak'а - какая файловая система на разделах его винча. Оказалось, на всех трёх стоит NTFS
| Лирическое отступление |
|---|
|
NTFS - New Technology File System, файловая система, разработанная специально для Windows NT. Особенностью этой системы является журналирование и поддержка транзакций. Каждая транзакция (например, перемещение файлов) записывается в журнал системы, и если в это время случится какая-то фигня (например, выключат электроэнергию), то при загрузке Windows будет запущена программа autochk.exe, которая в свою очередь запустит chkdsk.exe - утилиту проверки файловой системы, анализирующую состояние невыполненных транзакций и повторяющую/отменяющую их. Файл не может быть перемещён наполовину: транзакция может быть либо выполнена целиком, либо не выполнена вообще. Т.о. достигается сохранность файловой системы и пользовательских данных
Кстати, думаю, здесь нелишним будет "договориться о терминах", потому что в последующем мы будем употреблять различные мудрёные слова:)
Сектор - минимальная порция данных, с которой диск обращается как с единым целым. Кластер - группа смежных секторов, с которой файловая система работает как с единицей информации. NTFS позволяет выставлять размеры кластера от одного (512 байт) до 32 (16 Кб) секторов, но в любом случае - если кластер заполнен хотя бы на один байт, то он считается заполненным целиком. Отсюда вывод: правильно подобранный размер кластера может существенно увеличить производительность файловой системы. От себя добавлю: в этом случае лучше послушаться мнения самой ОС, выставляющей размер кластера по умолчанию 4 Кб
Ясен палец, что в кластерах файловой системы хранятся данные, составляющие ваши файлы. На NTFS все структуры представляют собой файлы. И таблица размещения файлов, на NTFS называемая MFT (Master File Table) - тоже файл
Форматируя раздел под NTFS, система резервирует 12% в его начале для создания MFT. Если диск заполняется файлами, а в этом зарезервированном пространстве ещё есть пустое место, то MFT "жертвует" его на общие нужды. Потом, когда место освободится, MFT снова присвоит его себе, но довольствоваться придётся не ровным куском диска, а "дырками" между файлами. Развивается фрагментация MFT - довольно поганая ситуация, кстати. Отсюда и совет бывалых: старайтесь не забивать диск больше, чем на 80-88%
Тэкс... Сейчас я вам зацитирую Д. Михайлова, а вы читайте: «MFT поделен на записи фиксированного размера (обычно 1 Кб), и каждая запись соответствует какому либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей, для надежности - они очень важны - хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска - восстановить его положение можно с помощью его самого, «зацепившись» за самую основу - за первый элемент MFT
Первые 16 файлов NTFS (метафайлы) носят служебный характер. Каждый из них отвечает за какой-либо аспект работы системы. Преимущество настолько модульного подхода заключается в поразительной гибкости - например, на FAT-е физическое повреждение в самой области FAT фатально для функционирования всего диска, а NTFS может сместить, даже фрагментировать по диску, все свои служебные области, обойдя любые неисправности поверхности - кроме первых 16 элементов MFT
Метафайлы находятся корневом каталоге NTFS диска - они начинаются с символа имени "$", хотя получить какую-либо информацию о них стандартными средствами сложно. Любопытно, что и для этих файлов указан вполне реальный размер - можно узнать, например, сколько операционная система тратит на каталогизацию всего вашего диска, посмотрев размер файла $MFT. В следующей таблице приведены используемые в данный момент метафайлы и их назначение (остальные метафайлы на текущих версиях NTFS не используются)»
| $MFT | сам MFT |
| $MFTmirr | копия первых 16 записей MFT, размещенная посередине диска |
| $LogFile | файл поддержки журналирования |
| $Volume | служебная информация - метка тома, версия файловой системы, т.д. |
| $AttrDef | список стандартных атрибутов файлов на томе |
| $. | корневой каталог |
| $Bitmap | карта свободного места тома |
| $Boot | загрузочный сектор (если раздел загрузочный) |
| $Quota | файл, в котором записаны права пользователей на использование дискового пространства (начал работать лишь в NT5) |
| $Upcase | таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужна, в основном, потому, что в NTFS имена файлов записываются в Unicode, что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально. |
Итак, с основами познакомились, перейдём к конкретике. MFT состоит из файловых записей, адресующих первый кластер файла. Каждый файл на NTFS имеет атрибуты. Атрибутами являются: имя файла, его короткое имя в формате 8.3 для совместимости с MS-DOS, время его создания (а также последнего доступа и последней модификации) и куча системной инфы. Все атрибуты должны размещаться в фаловой записи MFT, но если вдруг не помещаются - в этой записи создаётся т.н. Attribute List, а все атрибуты располагаются в нескольких фаловых записях. Attribute List, собственно, хранит инфу, в какой записи MFT какие атрибуты записаны
С именами файлов творится полная фигня. Один и тот же файл, будучи записан в MFT один раз, может "находиться" в разных папках под разными именами! Разумеется, это будут не копии файла, а ссылки на него (soft links) - пока существует хоть одна ссылка, файл из MFT не стирается
Файл, по логике вещей, должен содержать данные. На NTFS это не обязательно: данные являются для файла опциональным атрибутом: их может и не быть. Но, если они есть, их можно разместить не в одном, а в нескольких атрибутах: один из них будет представлять собой "тело" файла (основной поток), а остальные - альтернативные потоки данных (Alternative Data Streams, ADS). Проще говоря, я могу создать файл размером в 1 байт и присобачить туда ADS размером в полтора гига... И система будет считать, что этот файл весит ровно 1 байт! потому что система "не интересуется" ADS
Зайдите в консоль, наберите там copy con 1.txt, затем введите любую строку (например, "Превед, земляне!!") и нажмите Ctrl+Z, а затем Enter - создастся файл 1.txt, содержащий указанную строчку. Дадим команду dir 1.txt, которая выведет нам размер этого файла (у меня, с "преведом" - 17 байт). Далее аналогичным образом создадим файлик 2.txt (в него я забил "Превед, марсиане!!" и у меня он весил 18 байт). А теперь дадим следующую команду: type 2.txt > 1.txt:stream1 - тем самым мы создали в файле 1.txt ADS с именем stream1 и поместили в него строчку из файла 2.txt, но... 1.txt по-прежнему весит 17 байт. Но нас не обманешь: more < 1.txt:stream1 - и вот она, заныканная строчка! Совершим такое извращение: copy 1.txt 3.txt, скопировав 1.txt в 3.txt, и скомандуем more < 3.txt:stream1 - как видите, консольная команда copy копирует файлы вместе с ADS. Explorer, кстати, тоже (а вот Total Commander до недавнего времени этого не умел - там нужно галочку в настройках поставить... Кстати, при прожиге на болванку файл остаётся без ADS). Но ни консоль, ни Explorer не дают никакой информации об ADS файла, что превращает их в идеальное укрытие для малвари! Хотя ситуация сдвинулась с мёртвой точки: и для Total Commander, и для Explorer написаны плагины, позволяющие просматривать ADS
Но вернёмся к нашим баранам: к атрибутам NTFS. Атрибуты могут быть резидентными и нерезидентными. Резидентные хранятся прямо в файловой записи MFT, а нерезидентные - вне MFT, где-нибудь на диске. Имя (или имена) файла - всегда резидентный атрибут. А если файл небольшого размера (как правило, меньше 1,5 Кб), то у него все атрибуты, включая данные, являются резидентными. Т.е. мелкие файлы хранятся внутри MFT, что существенно ускоряет доступ к файлу и уменьшает расход дискового пространства. А ещё на NTFS работает более совершенный механизм поиска файлов, нежели на FAT |
К чему я развёл тут всю эту демагогию? Дело в том, что MFT, являясь основой стабильной работы файловой системы, представляет собой просто файл и, как и любой другой файл, может быть повреждён. А одним из последствий побитого MFT как раз и является исчезновение разделов диска. Следовательно, имелись все шансы "подлечить" MFT и заставить винт работать стабильно. Но Karglak меня слушать не захотел (всё вопил, мол, винч убитый и восстановлению не подлежит) и сказал, что всё равно решил покупать новый, SATA'шный
Тут необходимо сказать, что незадолго до этого другой мой товарищ - WargaL - приобрёл себе SATA'шный винт и на своём опыте вывел правило: если SATA-винчестер является системным (т.е. с него грузится Windows), то для стабильной работы нужно ставить Windows версии не менее XP SP2
Сам по себе интерфейс SATA ничего нового не принёс: ну повесили винты на последовательную шину вместо параллельной, ну слегка расширили пропускную полосу - ну и что? Винчестер как тормозил, так и тормозит - ведь узкое место не в шине, а в механизме записи на магнитную поверхность (хотя, надо признать, что из всех устройств, юзающих этот механизм, винчестер - самое быстрое). Но SATA-винчестеры поддерживают "hot-swap" (смену винча во время работы, не выключая питание и не перегружая ОС), действительно являются чуть быстрее предыдущего поколения - PATA'шных винтов на IDE. Именно SATA-винчестеры стали оснащать новоизобретёнными технологиями, а IDE потихоньку отходит в прошлое. SATA-винчестеры стали настолько разрекламированы и популярны, что вытеснили с серверов диски с интерфейсом SCSI ("скази"). Спору нет, сказёвые винты божественно хороши и надёжны, но они нечеловечески дороги, а SATA дёшев, потому и в фаворе
Но покупателя SATA-винчестера кроме необходимости перебираться на WinXP SP2/2k3/Vista ждёт и другая неожиданность: если IDE-контроллеры более-менее одинаковы, и Windows ставится на IDE-винчестеры без проблем, то SATA-контроллеры разных производителей имеют нехилые отличия, поэтому к контроллеру (или материнской плате, на которой он установлен) должна прилагаться дискетка с драйверами, которую Windows при инсталляции обязательно потребует
В общем, забросил Karglak на полку винт свой IDE'шный и пригласил меня разобраться с SATA'шным, ибо сам в нём ладу не дал. А всего-то нужно в момент, когда инсталлятор Windows напишет "нажмите F6, чтобы установить особый драйвер SCSI или RAID", эту самую F6 нажать и скормить ему вышеописанную дискетку. Но дискетку эту в большинстве случаев нужно сварганить самому. Потому взял я диск с дровами от Karglak'овской материнки и отправился к ближайшему компьютеризированному соседу. Там я открыл диск с дровами нашёл там папку Floppy Image ("образ дискеты") и стал втыкать в содержимое. А содержала эта папка драйверы SATA-контроллера для довольно-таки большого количества версий Windows - там были дрова для Win2k, WinXP, Win2k3 и, точно не помню, но вроде бы и для WinME тоже
Karglak планировал устанавливать WinXP SP2, поэтому я скопировал на дискетки XP'шные драйверы (их было несколько версий, поэтому получилось штук пять дискеток) и по ошибке - один из драйверов для Win2k. После этого мы запустили инсталлятор WinXP и, когда он предложил нажать F6, нажали - и скормили ему одну из дискеток. Не прокатило... В середине установки инсталлятор заматерился: мол, чё за винт вы мне подсунули, не буду на него ставиться - и прервал установку. Мы заново запустили инсталлятор и скормили другую дискетку - снова не то. И тут Karglak обратил внимание на то, что при скармливании дискеты с SATA-дровами инсталлятору он копирует содержимое дискеты в память, и теоретически мы можем подсунуть ему сразу несколько версий драйвера. Мы так и сделали - поочерёдно скопировали в память все XP'шные дрова и затесавшийся по ошибке Win2k'евский. И - о чудо! - инсталлятор не заматерился, а принялся активно копировать файлы на жесткач, а в какой-то момент вывел имя понравившегося ему SATA-драйвера. Не поверите, это был драйвер от Win2k! Возможно, XP'шные дрова были бажными или производитель случайно перепутал папки и положил драйвер не туда, но факт: если бы мы следовали логике, а не ошиблись, то Windows мы устанавливали бы года три...
Ну, да и хрен с ними. Инсталлировали мы WinXP SP2, кое-чего из ПО, я систему поднастроил слегка, а затем поинтересовался, что же Karglak намерен делать с "убитым" IDE'шным винтом. Karglak сказал, что я могу его забирать и, в случае, если я смогу его реанимировать, пусть он остаётся в моей собственности. Такие условия меня более, чем устраивали:)
По приходу домой я прицепил "убитый" винчестер как Primary Slave ("мастером" был мой жёсткий диск с установленной WinXP SP1) и запустил комп. После появления бутскрина Windows экран погас, и моя ОС признаков жизни не подавала. Я нажал RESET, зашёл в BIOS Setup и поглядел, виден ли там второй винчестер. В BIOS'е всё было нормально, и я принял вторичную попытку загрузиться. В этот раз бутскрин сменился голубым фоном, на котором программа autochk.exe белыми буквами вывела результаты своей работы
| Лирическое преступление:) |
|---|
|
Autochk.exe - удивительная вещь! Во-первых, она является NativeAPI-программой, т.е. пользуется функциями ядра системы, не дожидаясь загрузки остальных компонентов. Именно поэтому она имеет такую мощь: может как угодно обращаться к файлам и кроить файловую систему. Каждый раз при загрузке ОС эта утилита анализирует файл "грязности" (dirty) дискового тома, который выставляется в случае непредвиденного сбоя в работе (например, если внезапно выключили электроэнергию) или вручную - при помощи консольной команды fsutil. Если диск "грязный", то autochk.exe запускает chkdsk.exe для проверки диска и исправления ошибок файловой системы. Перед тем, как начать лопатить диск, появляется обратный отчёт с 10 до 0 - если в это время нажать любую клавишу, то проверка будет отменена. Лично я рекомендую всегда соглашаться с мнением autochk.exe и на своём компе после инсталляции Windows всегда командую в консоли chkntfs /t:0 - чтобы проверка начиналась без предварительного отчёта (chkntfs - это конфигуратор для chkdsk)
Chkdsk анализирует диск в 3 прохода: анализ файлов, папок (индексов файловой таблицы) и дескрипторов безопасности. На больших разделах этот процесс занимает довольно большое время (иногда - до нескольких суток), но я настоятельно советую вам никогда не прерывать его
Несмотря на внешнюю неказистость, эти утилиты проверки диска очень мощные. На моей памяти были случаи, когда консольная команда chkdsk /f /r /x заставляла стабильно работать казалось бы бесконечно бажные винчестеры |
Итак, autochk.exe определила все три раздела на винчестере Karglak'а как "грязные", и весёлый chkdsk.exe принялся за работу. Как я и думал, MFT была изрядно побита: на всех трёх разделах выводилось множество "file record is unreadable". Соответственно, попадались и нигде не прописанные ("осиротевшие", "orphaned") файлы. Chkdsk.exe молотил файловую систему довольно долго, непрерывно матерясь на английском языке. Временами словоизвержение прекращалось, создавалась полная иллюзия зависания, но у меня хватило терпения дождаться конца работы этой утилиты. Всего на восстановление трёх разделов общей суммой 60 Гб ушло около часа. После этого Windows загрузилась, в системе появились новые логические диски, файлы на которых были полностью восстановлены: архивы, документы (включая курсовую работу Karglak'а по археологии), .exe-шники, мультимедиа-файлы, за исключением 2-х .mp3'шек (они оказались по 0 байт размером)

Karglak был тут же оповещён о "реанимации" своего винчестера, но следует отдать ему должное - он не стал просить вернуть его назад, сразу сказав: "Уговор есть уговор". Он всего лишь попросил не удалять файлы, относящиеся к его курсовой
Новоприбывшие разделы подверглись дефрагментации, после чего были заполнены различными данными - ни сбоев, ни предупреждений не возникло. Система с двумя винчестерами спокойно выдержала напряжённую работу в течение десяти суток, и у меня нет никаких сомнений в работоспособности нового винчестера

Мораль: не мешайте Windows делать свою работу; в MicroSoft работают вполне разумные люди, и проектированное ими ПО зачастую выглядит умнее юзеров
В данном случае, если бы Karglak не отвечал отказом на попытку autochk.exe запустить проверку диска, у меня бы не было нового винчестера:)
19.06.2007 эта статья была подкорректирована по просьбе одного из участников вышеописанных событий