1

アプリケーションを作成し、サービスを使用してそれを開始しました。Windows 7 ではすべて C++ で記述されています。私のクエリはHow can a Windows Service determine its ServiceName?に似ています。

実行時に実行可能ファイルで (C++ で)、その実行可能ファイルを開始したサービスの名前を特定する方法はありますか?

正しい方向へのポインタが必要です。

ありがとう

4

1 に答える 1

0

すべてのサービスのリストを取得し、それらをフィルタリングするために使用できますEnumServicesStatus。最善の方法は、バイナリ名を比較することだと思います。QueryServiceConfig次に、サービス名を含むサービス構成を取得するために呼び出します。

これがあなたが探しているものであることを願っています。もちろん、これを行うには、Windows Vista および 7 でアプリケーションを管理者として実行する必要があります。そうしないと、への呼び出しOpenSCManagerが確実に失敗します。

編集: もう1つの簡単な方法は、サービスと実行可能ファイル間で共有されるdefファイルまたは別の構成ファイルにサービス名をハードコードすることです。これにより、SCManagerのすべての手間が省けます

于 2012-05-22T06:27:55.670 に答える