![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
Всем привет!
Столкнулся с вот какой проблемой: есть сервис, запускающийся автоматом при старте системы, зависящий от сервиса winmgmt (т.е от WMI). Задача - заставить мой сервис запускаться до входа какого-либо юзера в систему. Понятно, что до winlogon'а у меня загрузиться не получится, т.к все сервисы грузятся после его запуска (согласно Русиновичу), но хотелось бы загрузить свой сервис как можно скорее, так чтобы он уже работал, когда юзер зайдёт в свой аккаунт. Сейчас ситуация следующая: если немного подождать на экране выбора пользователя, а потом зайти в систему под каким-либо юзером, то сервис оказывается запущеннным, но если действовать быстро, т.е как только появляется экран выбора юзера сразу же кликнуть по какому-нибудь, то оказывается, что мой сервис ещё не запущен и запускается он через секунд так 10-15. Такого быть не должно, мне нужно чтобы сервис гарантированно уже был запущен, когда юзер попадает на свой десктоп. Как бы это сделать ? Можно конечно поместить мой сервис в какую-нибудь группу сервисов, например в "Boot" или "System", но это не подходит, т.к мой сервис использует WMI, а сервис WMI группы не имеет, поэтому запускается фиг знает когда. Конечно, можно сменить группу WMI, но это уже хак, т.к изменять жизненно важные параметры системы - последнее дело. Изменив порядок загрузки WMI ненароком можно добиться того что другие сервисы, зависящие от WMI, перестанут работать. Существует ли какое-нибудь решение моей задачи ? Какие будут предложения ? -------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Загрузка winmgmt зависит от службы RPCSS, т.е. winmgmt будет грузиться после неё. В этом ты можешь убедиться посмотрев в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\winmgmt на ключ DependOnService. Сам RPCSS принадлежит к группе COM Infrastructure, он в ней единственный сервис. Порядок загрузки по группам ты можешь посмотреть вот здесь: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder. Просто проанализируй все эти параметры, поидее тебе должны помочь параметры DependOnService и DependOnGroup. Т.е. создаёшь DependOnService со значением winmgmt и служба будет грузится сразу после winmgmt.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
W4FhLF, всё это я знаю, я так и делаю, ставлю DependOnService - winmgmt, это не помогает, т.к служба конечно грузится после WMI, но сам WMI грузится довольно-таки поздно, так что до логина юзера сделать загрузку моего сервиса не получается
-------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Sheff, не понимаю тогда твоей позиции. Твоя задача не позволяет грузится до того, как произойдёт логин и использовать WMI, значит что-то одно надо исключить, это ведь очевидно.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
W4FhLF, наоборот, мне нужно сделать так чтобы мой сервис грузился после загрузки WMI, но до входа в десктоп, неужели это невозможно ?
-------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
"вход в десктоп" - какую службу ты имеешь ввиду?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
W4FhLF, я имею ввиду когда юзер "кликает на иконке", т.е логинится. Вот до этого момента я обязан запустить мою службу.
-------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Хм, тебе служба не поможет.
За авторизацию пользователя в системе целиком отвечает winlogon, а он грузится ещё до пользовательскиз служб. Он сам запускает SCM (service.exe) после загрузки компонентов, которые учавствуют в входе, этим объясняется: Тебе нужен другой вариант. Могу предложить такой. Winlogon получает аутентификацонные данные через Graphical Identification and Authentification DLL, по дефолту это либа msgina.dll, но ты можешь установить свою GINA DLL, установив параметр HKLM\Software\Microsoft\WIndows NT\Current Version\ WinLogon\GinaDLL. Тогда твоя DLL будет иметь возможность управлять авторизацией и входом в винду. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
W4FhLF, да про подмену джины мне известно, да вообще можно проще сделать: написать сервис ядра. Между прочим, часть этого моего сервиса как раз и есть сервис ядра, просто в проекте уже поздно что-то менять, нужно сделать так чтобы заработало через сервисы, но я подозревал что это невозможно :( W4FhLF, спасибо огромное за помощь
![]() -------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |