Есть гуру по сервисам NT?

Тема в разделе "WASM.WIN32", создана пользователем irrona, 6 май 2005.

Статус темы:
Закрыта.
  1. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    Стоит задача написать сервис NT. Скелет я написал. Запускаю его как SERVICE_WIN32_OWN_PROCESS. Но есть проблема. При попытке обращения к реестру к ветке HKLM (там имеется пользовательский ключ с данными), сервис виснет. Поскольку в дальнейшем нужно будет навесить к нему обращение к базе данных, то боюсь потерпеть неудачу. Обращение к реестру пытаюсь сделать после инициализации сервиса в самом конце пользовательской процедуры ServiceMainProc. Может не там это делаю? Подскажите кто знает, пожалуйста.
     
  2. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    Это просто пипець, столько статей, сурсов,

    на чем хочешь, а ты такую гадость говоришь,

    стыдно должно быть.
     
  3. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    напышы дравыну и ни страдай !
     
  4. NeuronViking

    NeuronViking New Member

    Публикаций:
    0
    Регистрация:
    29 окт 2004
    Сообщения:
    476
    Адрес:
    где-то в Сиднее
    код обращения к реестру студию ибо все шаманы в отпуске.
     
  5. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    Может кто-нибудь все-таки более путный ответ даст?
     
  6. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    как будто у тебя там в коде порнография ...

    А не проще создать программу спрятать хотяб из панели задачь :)

    и пусть она обращается к реестру через WinAPI ...
     
  7. rst

    rst New Member

    Публикаций:
    0
    Регистрация:
    5 май 2003
    Сообщения:
    165
    irrona - сервис фактически ничем не отличается от обычного приложения.

    Драйвер - да. сервис - нет.

    делай выводы. ничего там виснуть не должно.
     
  8. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    Если ты обращаешься к HKLU (локал юзер),

    то проблема обстоит в следующем: сервис грузится ДО

    входа в систему. И юзер не определен. Обращайся к другим

    веткам. Сам долго парился.



    Удачи.
     
  9. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    perez

    Так куррент юзер или локал мачин? :)
     
  10. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    HKCU, видимо ))
     
  11. rst

    rst New Member

    Публикаций:
    0
    Регистрация:
    5 май 2003
    Сообщения:
    165
    perez, на самом деле не соглашусь с Вашим утверждением.

    HKCU доступен из-под сервиса.

    Т.к. HKCU - это просто симлинк на HKEY_USERS\USER_SID

    При этом у LocalSystem (под которым скорее всего крутится сервис - есть SID. Он у всех аккаунтов есьт. Loclalsystem не исключение).

    Далее... Этот симлинк живет и существует в контексте конкретного WindowStation - т.е. если к примеру взять терминал-сервер - то для каждой сессии (если пользователи разные) HKCU будет указывать в разные места. Соответсвенно при старте сервиса - естественно создается WindowStation для аккаунта LocalSystem и в ней крутится этот сервис. И соответсвенно у него есть HKCU.



    Насчет контекста в котором живет этот симлинк - могу ошибаться. НО смысл остается тот же - у сервисов под LocalSystem есть HKCU И он с этапом входа пользователя в систему никак не связан.



    Далее - даже если бы было так - не может он виснуть. Не может виснуть по той причине, что RegOpenKey вернул бы двойку, а не повис, если бы HKCU не существовало.
     
  12. rst

    rst New Member

    Публикаций:
    0
    Регистрация:
    5 май 2003
    Сообщения:
    165
    Для примера - могу предложить поменять у сервиса Print Spooler Image Path на %systemroot%\system32\regedt32.exe и перезапустить сервис. В открытом Regedit - посмотреть что будет под HKCU.
     
  13. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    flankerx:

    куррент юзер, к вечеру мозги плавятся :dntknw:



    Я писал сервис под XP SP1, хотел работать с ключем

    из HKCU. Корректно не работала ни одна функция.

    С другими ветками все ОК.
     
  14. irrona

    irrona Member

    Публикаций:
    0
    Регистрация:
    26 май 2004
    Сообщения:
    178
    Адрес:
    Тирасполь
    perez

    Если ты обращаешься к HKLU (локал юзер)



    Я написал HKLM (local machine)



    Ошибка была в вызове RegOpenKeyEx. Функция возвращала ошибку, а сервис переставал отвечать на запросы SCM (а может просто ставил их в очередь). Переписал блок кода - вроде работает.
     
Статус темы:
Закрыта.