Хорошим началом были бы сервисные группы. Службы Windows готовы загружать группы в соответствии с их зависимостями:
Сервисная группа - это набор похожих сервисов, которые загружаются вместе при запуске. Большинство сервисов, которые отображаются в подразделе HKEY_LOCAL_MACHINE\CurrentControlSet\Services, являются частью группы сервисов. Windows NT загружает одну сервисную группу за раз. Службы, не входящие в группу, загружаются после загрузки всех групп служб.
Подраздел HKEY_LOCAL_MACHINE\CurrentControlSet\Control\ServiceGroupOrder определяет порядок загрузки групп услуг. Значение списка - это запись REG_MULT_SZ, которая определяет порядок группы услуг.
Подраздел HKEY_LOCAL_MACHINE\CurrentControlSet\Control\GroupOrderList определяет порядок загрузки услуг в пределах группы услуг. Сервисам в сервисной группе присваивается тег, уникальное числовое значение в сервисной группе, которое определяет порядок загрузки сервисов. Каждая запись значения в GroupOrderList представляет группу услуг.
Значение записи представляет собой серию тегов в указанном порядке. Первая запись в этом значении REG_BINARY - это количество служб в группе, за которыми следуют теги в последовательности загрузки. Если вы посмотрите на PointerPort, то увидите, что в группе есть 3 службы и что сначала загружается служба с тегом 02, затем служба с тегом 01, а затем тег 03.
На уровне обслуживания подразделы HKEY_LOCAL_MACHINE\CurrentControlSet\Services\ServiceName содержат:
Группа - этот REG_SZ указывает имя группы услуг, к которой принадлежит услуга.
tag - этот REG_DWORD определяет последовательность загрузки сервиса.
DependOnGroup - эта запись REG_MULTI_SZ определяет группы услуг, которые должны быть успешно загружены до загрузки этой службы.
DependOnService - эта запись REG_MULTI_SZ определяет службы, которые должны быть успешно загружены до загрузки этой службы.