|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 16, 2003 21:20:33 А если запустил приложение, оно установило службу (как в примерах, например VirtToPhys.asm), приложение работает, служба запущена.. и тут перегорают пробки в квартире! Вворачивают новые пробки, включают компьютер, запускают ту же самую программу, она пытается установить службу - а не получается, т.к. в реестре остались записи, и возвращается ошибка- служба уже существует. Как быть?? Как удалить чтоли службу или что надо делать???? Подскажите. |
|
|
Дата: Окт 16, 2003 21:34:24 А зачем? запустить заново не судьба? чтоб удалить службу ( полностью ) DeleteService помимо этого нужно удалить в реестре ( если остались ) HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_ИМЯСЕРВИС А. |
|
|
Дата: Окт 16, 2003 22:09:10 · Поправил: prog Дык, делаю ; Install service invoke CreateService, hSCManager, addr sServiceName, addr sServiceDescr,SERVICE_START + SERVICE_STOP + DELETE, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE, addr acModulePath, NULL, NULL, NULL, NULL, NULL .if eax != NULL ... .else invoke MessageBox, NULL, $CTA0("Can't register driver."), NULL, MB_OK + MB_ICONSTOP .endif Выскакивает Can't register driver Т.е. службу не запустить, если она в прошлый запуск не убралась. (я так понимаю- из внутренней базы SC Manager) Конечно, можно перед запуском службы стирать все возможные ключи в реестре. Делаю так. Но после этого надо перезагрузиться, т.к., видимо, при последней загрузке компьютера чтото из реестра загружается в память (база SCM ?), поэтому удалил из рестра- перезагрузись. И того выходит такая идиотская петрушка- User запустил приложение, случайно нажал коленкой на кнопку Reset, перезагруился, запускае приложение снова- бах, оно не работает, говорит- Пожалуйста, перезагрузитесь. (оно удалило из реестра ключи, оставшиеся от службы и теперь нужно перезагрузиться). Вроде не красиво так и не правильно. |
|
|
Дата: Окт 17, 2003 01:26:57 · Поправил: prog Вот ведь блин. Совсем заработался. Если служба уже в базе данных SCM, то ее просто надо удалить оттуда, и потом заново запустить. invoke OpenService,hSCManager,addr sServiceName,SERVICE_ALL_ACCESS or eax,eax jz @F mov hService,eax invoke DeleteService, hService invoke CloseServiceHandle, hService @@: а я голову ломал... ---------------------------------------------------- И ЕЩЕ ВОПРОС!: ---------------------------------------------------- Вот тут http://www.wasm.ru/print.php?article=drvw2k02 написано: ...Чтобы убедиться на практике, что все о чем я буду говорить правда, нам потребуются права администратора. Ведь, чтобы только получить доступ к SCM для регистрации драйвера, не говоря уже обо всем остальном, естественно надо иметь некоторые привилегии... Так чтоже? Значит, если программку, например, VirtToPhys (или Любую программу, которая использует нужный ей KernelModeDriver, регистрируя его как Службу), запустит на компьютере пользователь, у которого права User или PowerUser (А ВЕДЬ ДЛЯ НИХ-ТО ЭТИ ПРОГРАММЫ И СОЗДАЮТСЯ!!!), то она не сможет установить Службу и поэтому не будет работать??? |
|
|
Дата: Окт 17, 2003 04:24:47 1)нет. не будет работать. 2)пересоздавание сервиса - не выход. если тебе нужен экзешник другой - поправь конфиг сервиса. Не нужно делать каждый раз delete+create |
|
|
Дата: Окт 17, 2003 11:10:23 2)пересоздавание сервиса - не выход. если тебе нужен экзешник другой - поправь конфиг сервиса. Не нужно делать каждый раз delete+create В каком смысле "экзешник другой" ? "конфиг сервиса" -это что? |
|
|
Дата: Окт 17, 2003 13:08:15 От бля.. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllpr oc/base/services.asp и только ПОТОМ сюда с вопросами! |
|
|
Дата: Окт 17, 2003 13:20:08 понятно. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.075 |