Разрешить службе взаимодействовать с рабочим столом — Служба Windows взаимодействует с OPC Server

У меня есть приложение, говорящее с сервером OPC.
Когда я запускаю его как службу Windows, он не может открыть соединение с сервером OPC.
Когда я активирую опцию «Разрешить сервису взаимодействовать с рабочим столом», это работает!
Но как я могу сделать это по умолчанию для моего приложения-службы.
Я пытался использовать флаг SERVICE_INTERACTIVE_PROCESS для функции API «CreateService», но с ошибкой 0x0057 (Неверный параметр) не получилось.

введите описание изображения здесь

// Install the service into SCM by calling CreateService
schService = CreateService(
schSCManager,                   // SCManager database
pszServiceName,                 // Name of service
pszDisplayName,                 // Name to display
SERVICE_QUERY_STATUS,           // Desired access
SERVICE_WIN32_OWN_PROCESS,      // Service type
dwStartType,                    // Service start type
SERVICE_ERROR_NORMAL,           // Error control type
szPath,                         // Service's binary
NULL,                           // No load ordering group
NULL,                           // No tag identifier
pszDependencies,                // Dependencies
pszAccount,                     // Service running account
pszPassword                     // Password of the account
);
if (schService == NULL)
{
wprintf(L"CreateService failed w/err 0x%08lx\n", GetLastError());
goto Cleanup;
}

Для pszAccount и pszPassword NULL использовать локальную системную учетную запись.

schService = CreateService(
schSCManager,                   // SCManager database
pszServiceName,                 // Name of service
pszDisplayName,                 // Name to display
SERVICE_QUERY_STATUS,           // Desired access
SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS,      // Service type
dwStartType,                    // Service start type
SERVICE_ERROR_NORMAL,           // Error control type
szPath,                         // Service's binary
NULL,                           // No load ordering group
NULL,                           // No tag identifier
pszDependencies,                // Dependencies
pszAccount,                     // Service running account
pszPassword                     // Password of the account
);

0

Решение

CreateService сообщит об этой ошибке, если параметр типа сервиса установлен неправильно:

Если вы укажете либо SERVICE_WIN32_OWN_PROCESS, либо
SERVICE_WIN32_SHARE_PROCESS, и служба работает в контексте
учетной записи LocalSystem, вы также можете указать следующее значение:
SERVICE_INTERACTIVE_PROCESS

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]