Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 2000/XP (http://forum.oszone.net/forumdisplay.php?f=6)
-   -   Есть ли аналог autoexec.bat в Windows XP? (http://forum.oszone.net/showthread.php?t=166146)

Moandor 03-02-2010 19:35 1338157

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

Цитата tft701
производить пару операций с парой папок до запуска Windows?


Petya V4sechkin 03-02-2010 19:54 1338178

Цитата:

Цитата tft701
нужно производить пару операций с парой папок до запуска Windows

Совсем до запуска? Какие операции, с какими папками?

Moandor 03-02-2010 20:07 1338188

В 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 1338226

tft701, почему бы не добавить батник в обычную автозагрузку?

Moandor 03-02-2010 21:11 1338242

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

Grabber2006 03-02-2010 21:43 1338277

autoexec.bat в XP не работает. Он там лежит для совместимости с досовскими программами. И перед запуском XP никакой DOS не запускается.

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

Полезная ссылка.

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

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

Moandor 03-02-2010 22:38 1338314

Цитата:

Цитата Grabber2006
HKLM ключик с командой добавить не проще? »

и куда, позвольте поинтересоваться, его добавлять? Уж не в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run ли?
или в HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute ?
Мне до запуска Винды сделать всё нужно, до! Реестр тут не поможет, ИМХО.

Grabber2006 03-02-2010 22:52 1338327

Сходу в голову приходит только какой-нибудь линукс, грузящийся с помощью bootpart, делающий необходимые операции и, на прощание, изменяющий 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 1338457

Цитата:

Цитата tft701
Мне до запуска Винды сделать всё нужно, до! Реестр тут не поможет, ИМХО. »

Объясняю популярно
Во всех версиях Windows NT "До запуска Винды" ничего не загружается. Нет там никакого "доса".
Единственное, что загружается - это "начальный загрузчик" (файл ntldr в корне системного диска), который считывает файл boot.ini и позволяет пользователю выбрать одну из нескольких операционных систем и режим её запуска. Всё.

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

Moandor 04-02-2010 09:54 1338585

Цитата:

Цитата El Scorpio
При очень большом желании можно попытаться заменить начальный загрузчик своим »

А это интересно. Но слишком сложно и непредсказуемо. Всё же попробую поразбираться в свободное время)

Grabber2006 05-02-2010 08:37 1339442

Цитата:

Цитата El Scorpio
При очень большом желании можно попытаться заменить начальный загрузчик своим »

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

eryoma 06-02-2010 01:33 1340233

Цитата:

Цитата tft701
Цитата:

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

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

Admiral 06-02-2010 02:39 1340278

tft701, быть может решением задачи станет применениям родных для smss.exe (Session Manager) приложений?
Запуск процесса до авторизации пользователя
Решение с загрузчиком интересное, но кто обеспечит распознание файловой системы? Даже если, в разрез с рекомендациям, применяется простенькая FAT.

Moandor 06-02-2010 11:23 1340400

eryoma, интересная информация.. Но сначала попробую разобраться с Native API

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

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

K.A.V. 06-02-2010 16:34 1340619

Цитата:

Цитата tft701
Есть ли аналог autoexec.bat в Windows XP? »

А как же файлы autoexec.nt и config.nt в C:\WINDOWS\system32 ?

Moandor 06-02-2010 16:41 1340624

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

Grabber2006 07-02-2010 14:34 1341309

Ещё вариант: Можно написать простой экзешник и запускать его в качестве службы с помощью srvany.exe. Или прямо службу написать (в Delphi, например, есть шаблон).

Статья про необычные методы автозапуска.

El Scorpio 08-02-2010 04:42 1341787

Цитата:

Цитата Grabber2006
Цитата El Scorpio:
При очень большом желании можно попытаться заменить начальный загрузчик своим »
Ммм, загрузчик будет удалять папку? »

Для этого нужно будет самому писать код поддержки файловой системы - ведь стандартные драйвера операционной системы он использовать не может

Reult 14-02-2010 01:32 1346611

Удивительно, что сам вопрос о потребности запускать программу на выполнение ДО начала загрузки 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 1347320

Reult, а теперь всё то же самое, но по-русски :)

ortogonales 27-02-2010 18:58 1357556

Мне требовалось запускать скрипт, перезаписывающий юзеровский ntuser.dat из эталона до входа юзера в систему
(каждый раз при старте). Я решил задачу с помощью gpedit.msc и скрипта (*.cmd)
В пункте "конфигурация windows>сценарии" указал файл скрипта (*.Cmd), содержащий :
--------------------------------
@echo off
c:\windows\system32\xcopy "C:\Documents and Settings\Default User\Ntuser.dat" "C:\Documents and Settings\User\Ntuser.dat" /H /R /K /Y /X /Q
---------------------------------
после этого User'ы могут ломать свой реестр в своё удовольствие.
политики прописываются в HKLM и (зачем-то) ещё дублируются в папке "system32\GroupPolicy".
Но вот сделать то же самое с общим реестром (\system32\config\system) этим способом не получится.
Значит, нужен способ запуска из ntldr (linux неинтересно, т.к. минимум полминуты лишних на загрузку ядра)

не верьте про службы -они запускаются ПОСЛЕ логина.
Также микрософт брешет про планировщик ("запускать при старте компьютера").
Никакие "патентованные" способы и автоэкзеки не помогут.


Время: 20:55.

Время: 20:55.
© OSzone.net 2001-