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

0

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

Изображение 174551

// 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 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 binary
    NULL,                           // No load ordering group
    NULL,                           // No tag identifier
    pszDependencies,                // Dependencies
    pszAccount,                     // Service running account
    pszPassword                     // Password of the account
    );
Теги:
windows-services
opc

1 ответ

0
Лучший ответ

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

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

  • 0
    Это именно то, что я пытался
  • 0
    Я попытался использовать SERVICE_INTERACTIVE_PROCESS вместо SERVICE_WIN32_OWN_PROCESS.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню