アプリケーションを作成し、サービスを使用してそれを開始しました。Windows 7 ではすべて C++ で記述されています。私のクエリはHow can a Windows Service determine its ServiceName?に似ています。
実行時に実行可能ファイルで (C++ で)、その実行可能ファイルを開始したサービスの名前を特定する方法はありますか?
正しい方向へのポインタが必要です。
ありがとう
アプリケーションを作成し、サービスを使用してそれを開始しました。Windows 7 ではすべて C++ で記述されています。私のクエリはHow can a Windows Service determine its ServiceName?に似ています。
実行時に実行可能ファイルで (C++ で)、その実行可能ファイルを開始したサービスの名前を特定する方法はありますか?
正しい方向へのポインタが必要です。
ありがとう
すべてのサービスのリストを取得し、それらをフィルタリングするために使用できますEnumServicesStatus
。最善の方法は、バイナリ名を比較することだと思います。QueryServiceConfig
次に、サービス名を含むサービス構成を取得するために呼び出します。
これがあなたが探しているものであることを願っています。もちろん、これを行うには、Windows Vista および 7 でアプリケーションを管理者として実行する必要があります。そうしないと、への呼び出しOpenSCManager
が確実に失敗します。
編集: もう1つの簡単な方法は、サービスと実行可能ファイル間で共有されるdefファイルまたは別の構成ファイルにサービス名をハードコードすることです。これにより、SCManagerのすべての手間が省けます