Re: ATL service, пара вопросов...
От: Figaro Россия  
Дата: 17.04.06 09:17
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Уважаемые Ценители ATL


А>Тут оформлял программу в виде сервиса для win,

А>на примере того, как здорово было описано в статье=

А>http://www.rsdn.ru/Forum/Info.aspx?name=FAQ.winapi.atlservice
Автор: Владислав
Дата: 06.04.05


А>Но столкнулся с несколькими вопросами, которые по своей безграмотности не знаю как решить:


А>1. Когда вызывается #####.exe -service , его рабочая директория, там где располагается

А>сам exe-шник. Если он запускается как сервис, его рабочая директория становиться /windows/system32.
А>Собственно вопрос:
А>Как без очень крутых пируэтов вернуть/узнать, где все-таки текущая директория? (где лежит сам exe).


А>2. Где нужно/можно менять/назначать описание сервиса?


А>Заранее благодарен за ваши ответы.



Несколько странно, что system32. У меня вполне работает обычное:
    
TCHAR szFilePath[MAX_PATH + _ATL_QUOTES_SPACE];
DWORD dwFLen = ::GetModuleFileName(NULL, szFilePath + 1, MAX_PATH);
.....


И далее:
     SC_HANDLE hService = ::CreateService(
        hSCM, m_strServiceName, m_strServiceDisplayName,
        SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
        SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,
        szFilePath, NULL, NULL, _T("RPCSS\0LmHosts\0\0"), NULL, NULL);
    ....
    SC_LOCK sclLock = ::LockServiceDatabase(hSCM); 
    if (sclLock != NULL) {
        SERVICE_DESCRIPTION sdBuf;
        sdBuf.lpDescription = (LPTSTR) (LPCTSTR) m_strServiceDescription;
        ::ChangeServiceConfig2(hService, SERVICE_CONFIG_DESCRIPTION, (LPVOID) &sdBuf);
        ::UnlockServiceDatabase(sclLock); 
    }

Установка дескрипшена ограниченая для операционок, см. MSDN.
... << RSDN@Home 1.2.0 alpha rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.