Написать программу, которая запускается во время загрузки Windows, например, chkdsk?

Такие программы, как ScanDisk/chkdsk, могут работать во время загрузки Windows, то есть до появления экрана входа в систему. Я думал, что это только для внутренних программ Windows, но я видел, что Avast! антивирус предлагает ту же функцию для проверки на вирусы, пока Windows еще не загружена. Как это достигается? т.е. какие API мне нужно использовать для написания такой программы? Может ли это быть какая-либо программа командной строки, ограничен ли я подмножеством Windows API, должен ли я реализовывать определенный интерфейс?


person Felix Dombek    schedule 21.09.2012    source источник
comment
technet.microsoft.com/en-us/sysinternals/bb897447.aspx   -  person Harry Johnston    schedule 24.09.2012
comment
@HarryJohnston Большое спасибо! И для будущих читателей этого вопроса: я только что нашел undocumented.ntinternals.net, который является своего рода документацией для недокументированных функций ntdll.lib и, вероятно, будет очень полезен для тех, кто пытается написать нативную программу.   -  person Felix Dombek    schedule 24.09.2012
comment
Также полезно: нативная демонстрационная программа Марка Руссиновича read.pudn.com/downloads69/sourcecode/windows/system/247175/   -  person Felix Dombek    schedule 24.09.2012


Ответы (1)


Посмотрите ключ реестра

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Диспетчер сеансов

И значение BootExecute

Больше информации здесь:

http://technet.microsoft.com/en-us/library/cc963230.aspx

person rkosegi    schedule 21.09.2012
comment
Спасибо, возможно, у вас есть дополнительная информация с точки зрения программиста, то есть какие API мне нужно использовать для написания такой программы? Может ли это быть какая-либо программа командной строки, ограничен ли я подмножеством Windows API, должен ли я реализовывать определенный интерфейс? - person Felix Dombek; 21.09.2012
comment
Вы даже не получаете Windows API. Вы ограничены собственным API и, возможно, только его подмножеством. - person Luke; 21.09.2012