> В корне диска лишнего ничего не появляется, в каталоге, где > велись эксперименты, тоже всё чисто. Выходит, удаляется он > ;-) совсем не выходит. если открытый файл какойлибо файл переписать в другой каталог хэндл не теряется и программа прекрасно работает с этим файлом даже не зная что файл уже в другом месте. Так что если твой файл вообще пропал из списка файлов не значит что он стерт Ж). имхо надо почитать доки по нтфс.
Итак, имеем процесс, запущенный из файлового потока NTFS. К примеру, C:\Temp\SomeFile:SomeStream.exe. Удаляем SomeFile по F8 в FAR'е или Shift+Del в проводнике... Файл удаляется и имеем рабочий процесс-призрак! В списке процессов он виден, но файла образа у него нет ;-)
Тестировал под WinXP, но я думаю, что этому подвержены все версии NT.
Вот пошаговая инструкция, как потестить это дело:
1) скопируйте FARом notepad.exe в папку C:\TEMP.
2) Отключите параметр "Использовать системную функцию копирования"
3) Наведите указатель на regedit.exe и нажмите F5.
4) В диалоговом окне копирования вбейте путь C:\TEMP\notepad.exe:regedit.exe
и нажмите Ввод.
5) В командной строке FARa в каталоге C:\TEMP наберите notepad.exe:regedit.exe и
нажмите Ввод.
6) Должен запустится Regedit. Сверните его. Наведите указатель FARа на notepad.exe (в котором поток regedit)... Нажмите F8, Enter и получите экстаз ;-)) У вас regedit стал "призраком"...
[NT] Ха — ещё один глюк в XP ;-)16.07.03 20:54 Автор: HandleX <Александр М.> Статус: The Elderman
если файл записать в поток к корневому каталогу (type notepad.exe >c:\:notepad.exe)
а потом его запустить
start c:\:notepad.exe
то в списке процессов получаем еще один System idle process... неплохая маскировка ;-))
NT40 SP6 - не пашет07.07.03 14:56 Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
> если файл записать в поток к корневому каталогу (type > notepad.exe >c:\:notepad.exe) > а потом его запустить > start c:\:notepad.exe вот тут появляется Messagebox о том что "e:\:note2.exe is not a valid Windows NT application"
> то в списке процессов получаем еще один System idle > process... неплохая маскировка ;-)) Нихера себе маскировка - если я увижу у себя второй SystemIdleProcess я пожалуй обращу на это вниммание :-)
> > если файл записать в поток к корневому каталогу (type > > notepad.exe >c:\:notepad.exe) Команда type безобразно покорёжит exe. Она же текстовая...
Попробуй FARом...
> вот тут появляется Messagebox о том что "e:\:note2.exe is > not a valid Windows NT application" Ну ты понял, почему not valid...
> > то в списке процессов получаем еще один System idle > > process... неплохая маскировка ;-)) > Нихера себе маскировка - если я увижу у себя второй > SystemIdleProcess я пожалуй обращу на это вниммание :-) Гы. Я бы тоже ;-)
все работает07.07.03 15:13 Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
> > > если файл записать в поток к корневому каталогу > (type > > > notepad.exe >c:\:notepad.exe) > Команда type безобразно покорёжит exe. Она же текстовая... > Попробуй FARом... все работает без проблем
иначе не предлагал бы
система - w2k SP3
> > Нихера себе маскировка - если я увижу у себя второй > > SystemIdleProcess я пожалуй обращу на это вниммание > :-) > Гы. Я бы тоже ;-) к тем кто знает все процессы наизусть - это ясное дело не относится
однако таких не очень много
Sorry. Наверное, это косяк Диспетчера Задач Win2k, в XP его переделали и всё рулез.07.07.03 15:16 Автор: HandleX <Александр М.> Статус: The Elderman
> > > если файл записать в поток к корневому каталогу > (type > > > notepad.exe >c:\:notepad.exe) > Команда type безобразно покорёжит exe. Она же текстовая... это я уже заметил :-)
> Попробуй FARом... так я и пробовал, просто не стал уточнять - сорри
> > вот тут появляется Messagebox о том что "e:\:note2.exe > is > > not a valid Windows NT application" > Ну ты понял, почему not valid... Вопрос открыт
> > Попробуй FARом... > так я и пробовал, просто не стал уточнять - сорри > > > вот тут появляется Messagebox о том что > "e:\:note2.exe > > is > > > not a valid Windows NT application" > > Ну ты понял, почему not valid... > Вопрос открыт Закрываю вопрос.
Под NT4 Wks SP6 такие дела:
Start notepad.exe.exe:regedit.exe не работает по причине глюкавости команды Start ;-)
CreateProcess() работает, процессы создаются, "призраки" остаются ;-)
Диспетчер задач показывает вместо реального имени (или хотя бы regedit.exe) notepad.exe ;-) Вот где маскировка — пиши поток в internat.exe или в explorer.exe — не всякий догадается, ху из ху ;-)
В случае же с файлом 'C:\:notepad.exe' не работает ни CreateProcess, ни CreateProcessW с префиксом «\\?\» — ошибка 193.
Причём это не работает не только для потока из корневого каталога, но и для потока «C:\Temp:notepad.exe» тоже, т.е. для любого каталога.
Под Win2k ситуация похожая, исключая только то, что могут создаваться процессы из потоков, которые в каталогах. Причём Диспетчер Задач показывает вместо реального образа имя каталога (у меня для процесса из C:\Temp:notepad.exe показывал «Temp»).
Причём прикол — команда start не позволяет запускать процессы из потоков, которые в файлах, но позволяет из тех, которые в каталогах ;-)
Ну, и наконец, для случая с C:\:notepad.exe появляются два System Idle процесса, причём это так думает только Диспетчер Задач. Far'овский плагин просмотра процессов работает корректно (показывает «:notepad.exe»), правда не показывает его свойства.
Ну вот такие дела, если кого это обрадует ;-)
NT40 И ещё один вопрос :-)07.07.03 18:29 Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
> В случае же с файлом 'C:\:notepad.exe' не работает ни > CreateProcess, ни CreateProcessW с префиксом «\\?\» — > ошибка 193. Это я и сам заметил. Есть какие-нибудь идеи по поводу тогопочемуименно такая ситуация? Я пока дошел только до NtCreateSection - сейчас дальше не могу копать - закачка отвалится :-) Если кто-то расскажет в чем там дело буду рад. Просто интересно.
Хм... Под XP всё нормально. Может уже исправили?07.07.03 13:52 Автор: HandleX <Александр М.> Статус: The Elderman
Как его теперь удалить. Не усечь до 0, а именно удалить стандартными средствами. В гугле советуют перенести файл на фат и обратно. Но не буду же я корень тащить на фат :-)
Цитата: "In addition, streams cannot be deleted - to delete a stream you must delete its parent."
Фигня всё это. Вызови DeleteFile("C:\:notepad.exe")07.07.03 14:30 Автор: HandleX <Александр М.> Статус: The Elderman
Мне вот другое интересно — как NT его будет пейджить?07.07.03 12:20 Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 07.07.03 12:55 Количество правок: 1
Чудится мне, если exe будет большой, а процесс будет долго работать, и NT будет ещё чем-то напрягаться, то упадёт в синий экран через время, когда надо будет восстановить страницу из образа ;-)
Хм а ты уверен что файл удалился?07.07.03 14:38 Автор: Killer{R} <Dmitry> Статус: Elderman
Ну, после перезагрузки после проверки диска видим вот что:
--------------------------------------
Checking file system on C:
The type of the file system is NTFS.
A disk check has been scheduled.
Windows will now check the disk.
Cleaning up 1 unused index entries from index $SII of file 0x9.
Cleaning up 1 unused index entries from index $SDH of file 0x9.
Cleaning up 1 unused security descriptors.
--------------------------------------
Кстати, постоянно такая фигня в XP. Откуда берутся — сам большой Билл, наверное, не знает ;-)
В корне диска лишнего ничего не появляется, в каталоге, где велись эксперименты, тоже всё чисто. Выходит, удаляется он ;-)
[NT] По вере вашей да будет вам...07.07.03 15:40 Автор: Killer{R} <Dmitry> Статус: Elderman
> В корне диска лишнего ничего не появляется, в каталоге, где > велись эксперименты, тоже всё чисто. Выходит, удаляется он > ;-) совсем не выходит. если открытый файл какойлибо файл переписать в другой каталог хэндл не теряется и программа прекрасно работает с этим файлом даже не зная что файл уже в другом месте. Так что если твой файл вообще пропал из списка файлов не значит что он стерт Ж). имхо надо почитать доки по нтфс.
[NT] А может и выходит ;-)07.07.03 16:07 Автор: HandleX <Александр М.> Статус: The Elderman
> совсем не выходит. если открытый файл какойлибо файл > переписать в другой каталог хэндл не теряется и программа > прекрасно работает с этим файлом даже не зная что файл уже > в другом месте. Так что если твой файл вообще пропал из > списка файлов не значит что он стерт Ж). имхо надо почитать > доки по нтфс. С хендлами не так всё просто. Они суть ссылки на объект ядра, а при вызове MoveFile() система выставляет правильный путь в полях самого объекта. И сделано это для обновления запущенного софта, имхо.
я тут эксперимент провел07.07.03 16:20 Автор: Killer{R} <Dmitry> Статус: Elderman
взял прогу свою, довольно специфическую - написана на билдере и многие окна создаются только когда надо, а потом удаляются. прогу скорировал в поток как ты сказал запустил и сразу удалил. Удалилась нормально и полностью. У меня сп4 стоит. Далее стал открывать окошки - фиг вам - говорит Invalid strem но вообще пашет.Ок. Закрыл ее, записал опять. Запустил и на этот раз пооткрывал все что можно. Затем все закрыл и свернул (9Mb в RAM-> 1.5Mb). Удалил, развернул - и все равно пашет все нормально.
ЗЫ а баг действительно есть. Нo не фатальный Ж). Пиши в M$ если лицензия на винду есть Ж).