0

OPC サーバーと通信するアプリケーションがあります。Windows サービスとして実行すると、OPC サーバーへの接続を開くことができません。オプション「デスクトップとの対話をサービスに許可する」を有効にすると、機能します! しかし、これをサービス アプリケーションのデフォルトにするにはどうすればよいでしょうか。「CreateService」API 関数に SERVICE_INTERACTIVE_PROCESS フラグを使用しようとしましたが、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
    );
4

1 に答える 1

0

サービス タイプ パラメータが正しく設定されていない場合、CreateServiceはそのエラーを報告します。

SERVICE_WIN32_OWN_PROCESS または SERVICE_WIN32_SHARE_PROCESS を指定し、サービスが LocalSystem アカウントのコンテキストで実行されている場合は、次の値も指定できます。 SERVICE_INTERACTIVE_PROCESS

于 2013-10-11T13:32:48.243 に答える