PDA

Показать полную графическую версию : Есть ли аналог autoexec.bat в Windows XP?


Страниц : [1] 2

Moandor
03-02-2010, 19:35
Задача такова - мне нужно производить пару операций с парой папок до запуска Windows.
Autoexec.bat хоть и есть в корне диска С:, но он пустой и всё, что я туда пишу по ходу дела не выполняется (или выполняется?).
Добавление записи в autoexec.nt также ни к чему не привело. Собственно, вопрос: возможно ли
производить пару операций с парой папок до запуска Windows?

Petya V4sechkin
03-02-2010, 19:54
нужно производить пару операций с парой папок до запуска Windows
Совсем до запуска? Какие операции, с какими папками?

Moandor
03-02-2010, 20:07
В Win98 была замечательная фишка - прописать в autoexec.bat три строчки:
deltree C:\Recycled
md C:\Recycled
set temp C:\Recycled
таким образом корзина становилась хранилищем временных файлов и автоматически очищалась при каждой перезагрузке.
Но мне не это нужно. Просто допустим я создаю папку с оригинальным названием С:\1, прописываю в autoexec
rd С:\1 /q
перезагружаюсь, и ноль эмоций - папка на месте. Что курить Куда писать, чтобы работало?
Не переживайте, не вирус я пишу и не шутку какую. Просто действительно самому интересно.

Petya V4sechkin
03-02-2010, 20:50
tft701, почему бы не добавить батник в обычную автозагрузку?

Moandor
03-02-2010, 21:11
Petya V4sechkin, слушайте, в обычную автозагрузку я и полноценную программу могу написать и засунуть. А мне нужно именно перед запуском Windows. Да, совсем перед запуском. Так это возможно или нет?

Grabber2006
03-02-2010, 21:43
autoexec.bat в XP не работает. Он там лежит для совместимости с досовскими программами. И перед запуском XP никакой DOS не запускается.

Копайте в сторону написания модуля для первоначального загрузчика (не помню как точно называется). Так работают, например, boot-time дефрагментаторы.

Полезная ссылка (http://www.lookinfo.org/2007/08/05/jetapy_zagruzki_windows_xp.html).

Поможет поиск по словосочетанию "Native API".

P.S.: А в HKLM ключик с командой добавить не проще?

Moandor
03-02-2010, 22:38
HKLM ключик с командой добавить не проще? »
и куда, позвольте поинтересоваться, его добавлять? Уж не в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run ли?
или в HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute ?
Мне до запуска Винды сделать всё нужно, до! Реестр тут не поможет, ИМХО.

Grabber2006
03-02-2010, 22:52
Сходу в голову приходит только какой-нибудь линукс, грузящийся с помощью bootpart (http://www.winimage.com/bootpart.htm), делающий необходимые операции и, на прощание, изменяющий boot.ini для загрузки Windows после ребута.

--------------------------------

А, так, кладём на диск C файл rm.cmd:

@echo off
rmdir C:\1 /s /q
del C:\rm.cmd /f /q

Прописываем в вышеупомянутой ветке C:\rm.cmd и вуаля :)

------------

А в BootExecute выполняются программы написанные на Native API, но происходит это уже формально после начала загрузки Windows.


-------------


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

El Scorpio
04-02-2010, 05:57
Мне до запуска Винды сделать всё нужно, до! Реестр тут не поможет, ИМХО. »
Объясняю популярно
Во всех версиях Windows NT "До запуска Винды" ничего не загружается. Нет там никакого "доса".
Единственное, что загружается - это "начальный загрузчик" (файл ntldr в корне системного диска), который считывает файл boot.ini и позволяет пользователю выбрать одну из нескольких операционных систем и режим её запуска. Всё.

При очень большом желании можно попытаться заменить начальный загрузчик своим, но последствия такого шаманизма будут непредсказуемы :)

Moandor
04-02-2010, 09:54
При очень большом желании можно попытаться заменить начальный загрузчик своим »
А это интересно. Но слишком сложно и непредсказуемо. Всё же попробую поразбираться в свободное время)

Grabber2006
05-02-2010, 08:37
При очень большом желании можно попытаться заменить начальный загрузчик своим »

Ммм, загрузчик будет удалять папку?

eryoma
06-02-2010, 01:33
Цитата El Scorpio:
При очень большом желании можно попытаться заменить начальный загрузчик своим »
А это интересно. Но слишком сложно и непредсказуемо. Всё же попробую поразбираться в свободное время) »

Попалось сегодня, - может окажется полезным:
http://bugtraq.ru/cgi-bin/forum.mcgi?type=sb&b=21&m=104923
http://antsar.info/lekarstvo-dlya-zagruzchika

Admiral
06-02-2010, 02:39
tft701, быть может решением задачи станет применениям родных для smss.exe (Session Manager) приложений?
Запуск процесса до авторизации пользователя (http://forum.oszone.net/showthread.php?t=96959)
Решение с загрузчиком интересное, но кто обеспечит распознание файловой системы? Даже если, в разрез с рекомендациям, применяется простенькая FAT.

Moandor
06-02-2010, 11:23
eryoma, интересная информация.. Но сначала попробую разобраться с Native API

Admiral, спасибо! Вот как раз этим я и займусь в свободное время! =)

Как только получится из этого что-то более-менее путёвое, поставлю тему решённой, всем спасибо!

K.A.V.
06-02-2010, 16:34
Есть ли аналог autoexec.bat в Windows XP? »
А как же файлы autoexec.nt и config.nt в C:\WINDOWS\system32 ?

Moandor
06-02-2010, 16:41
K.A.V., а они же исполняются только при попытке запуска 16-разрядной подсистемы (эмуляция DOS) и на Win32 вообще никакого влияния не оказывают.

Grabber2006
07-02-2010, 14:34
Ещё вариант: Можно написать простой экзешник и запускать его в качестве службы с помощью srvany.exe (http://support.microsoft.com/kb/137890). Или прямо службу написать (в Delphi, например, есть шаблон).

Статья про необычные методы автозапуска. (http://www.xakep.ru/magazine/xa/081/118/1.asp)

El Scorpio
08-02-2010, 04:42
Цитата El Scorpio:
При очень большом желании можно попытаться заменить начальный загрузчик своим »
Ммм, загрузчик будет удалять папку? »
Для этого нужно будет самому писать код поддержки файловой системы - ведь стандартные драйвера операционной системы он использовать не может

Reult
14-02-2010, 01:32
Удивительно, что сам вопрос о потребности запускать программу на выполнение ДО начала загрузки Win-XP с носителя, большинству незнаком.

А ситуация может быть такой, что носителя-то и нет вовсе! Например, неисправен. Как неисправен? Да кто как сумеет его сделать неисправным. Правда, оставив себе программу, которая при запуске сделает диск исправным. А поместит он ее на флешку или еще куда, вот и запустить ее надо будет перед запуском XP. И все это без DOS, который NTFS не понимает.

Конкретно, ситуация м.б. еще сложнее: носитель лишь один и он гарантированно позволяет читать MBR, Partition Table, NTLoader, NTDetect, Boot.ini и, например, chkdsk.exe + cmd.cmd.

Как известно, chkdsk.exe устанавливает ERRORLEVEL равным 0 только в том случае, когда диск не содержал ошибок любого вида. Если предположить, что есть тот же диск, который во всем остальном, кроме упомянутых файлов, содержит ошибки, и по наступлению некого события перестает их содержать, то цикл постоянных проверок с помощью chkdsk.exe можно на этом закончить и продолжить загрузку XP, как если бы ничего не случилось — согласитесь, ведь нелогично пускать его грузиться с неисправного диска?

Вернее, пока он был неисправен. А теперь исправен: не важно с параметром /F или без него пускали chkdsk.exe — у каждого своя ситуация. Причем у большинства будет такая, что с параметром придется — вот и этим найденное нами решение тоже пригодится...

Какие будут идеи?

El Scorpio
15-02-2010, 03:01
Reult, а теперь всё то же самое, но по-русски :)




© OSzone.net 2001-2012