1

システムの Windows サービスを開始/停止する ac/c++ アプリケーションを作成しようとしています。

私のアプリケーションは、名前の間にスペースがないサービスに対しては正常に動作しますが、名前の間にスペースがあるサービス名に対しては応答しません。

以下は、サービスを開くために使用しているコマンドです。

SC_HANDLE serviceDbHandle = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
SC_HANDLE serviceHandle = OpenService(serviceDbHandle,
                                      "My Service",
                                      SC_MANAGER_ALL_ACCESS);

ここに"My Service"- 2番目のパラメータがLPCSTRあり、そのnull終端が問題を引き起こしています。

名前にスペースが含まれるサービスを開始/停止するにはどうすればよいですか - 手がかりや提案があれば役に立ちます。

XPマシンでVisual Studio 2005を使用しています。

ありがとう、

アニル

4

1 に答える 1

1

表示名 (可能性があります) ではなく、サービスの内部名 (スペースを含まない) を使用する必要があります。

MSDNから:

開くサービスの名前。これは、サービス オブジェクトの作成時に関数のlpServiceNameパラメーターによって指定された名前であり、サービスを識別するためにユーザー インターフェイス アプリケーションによって表示されるサービス表示名ではありませんCreateService

于 2012-04-27T16:28:43.467 に答える