AF>Ты не так понял. Здесь написано, что сервис не может быть DCOM клиентом, т.е. не сможет создавать компоненты на других машинах, так как не сможет себя аутентифицировать.
Возможно ....
вопрос ушел в сторону от API но тем не менее...
но я создал тестовый DCOM клиент и сервер , сервер есть сервис.
При запуск клиента на той же машине что и сервер
с галкой interact with desktop все отрабатывает.
Когда я в Logon as у сервиса сервера ставлю Localsystem то по при запуске клиента на другой машине методы не отрабатывают. Причем
HRESULT hr=::CoCreateInstance(CLSID_ServiceComObj,NULL,CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER |CLSCTX_LOCAL_SERVER ,IID_IServiceComObj,(void**) &pCP );
SUCCEEDED(hr) есть true
При Logon as <Сетевой юзер с правами на машине сервера>
отрабатывает только alertService ,точнее скорее всего отрабатывают оба
при вызове метода alert клиент подвисает до остановки сервиса сервера. Данное скорее всего происходит потому что сервер создал модальный диалог на невидимом десктопе и ждет пока я на невидимом десктопе нажму в диалоге ОК что не возможно.
Вот код клиентской стороны
void CClientDlg::OnButton2()
{
CComBSTR CB1=CComBSTR(OLESTR("Контент Service Alert") );
CComBSTR CB2=CComBSTR(OLESTR("Заголовок Service Alert") );
Вот как я делаю настройки
сервер:
ProbService -service
далее в DcomCnfg во вкладке security для ProbService делаю Use Custom ... и для всех трех RadioGroup и разрешаю группе EveryOne FullControl и Allow во всех трех RadioGroup
далее в свойствах ProbService в контрольной панели меняю юзеров в Logon as если необходимо.
клиент:
копирую серверное приложение на клиента
запускаю ProbService /RegServer
далее в DcomCnfg изменяю Run application on comp: <Комп сервера>