[ホーム] -
[Windows 11 FAQ 一覧] - [Windowsのサービスでexe名を確認するサンプルコード]
【目次】
そこで次のようなサンプルコマンドを作成しました。
まずはすべてのサービス名を列挙し、各サービスに関して詳細を列挙することより exe 名の一覧を生成しています。
サンプルコード:
@for /f "tokens=2" %%a in ('sc query^|find /i "SERVICE_NAME"') do @Call :ShowService %%a
pause
Goto :EOF
:ShowService
@sc qc "%1"|find /i "BINARY_PATH_NAME"
@sc qc "%1"|find /i "DISPLAY_NAME"
結果:
BINARY_PATH_NAME : "C:\Program Files (x86)\Common Files\Adobe\ARM\1.0\armsvc.exe"
DISPLAY_NAME : Adobe Acrobat Update Service
BINARY_PATH_NAME : "C:\Program Files (x86)\Common Files\Adobe\Adobe Desktop Common\ElevationManager\AdobeUpdateService.exe"
DISPLAY_NAME : AdobeUpdateService
BINARY_PATH_NAME : "C:\Program Files (x86)\Common Files\Adobe\AdobeGCClient\AGMService.exe"
DISPLAY_NAME : Adobe Genuine Monitor Service
(以下省略)
上記はexeのパスと表示名を出力していましたが、すべて表示するには以下のサンプルを使用します。
@for /f "tokens=2" %%a in ('sc query^|find /i "SERVICE_NAME"') do @Call :ShowService %%a
pause
Goto :EOF
:ShowService
@sc qc "%1"
結果をファイルに追記するには以下の様に修正します。ファイルを追記していくので実行前にc:\temp3\test.txtを削除してください。
@sc qc "%1" >> c:\temp3\test.txt
(注意)
出力を見ても分かる通りサービスは exe ではなく、svchost.exe が指定されている場合があります。
これはサービスごとに プロセスが起動されると同時に起動するプロセスが大量に発生しスイッチングの負荷が発生します。
よって負荷が下がるようにsvchost.exeが共有して使用されているということです。
参考:svchost はなぜ必要なのか
すべてのタイプをチェックする
sc queryex に type= all オプションを付けてすべてのタイプを確認したくなります。
しかし次のエラーで失敗します。これはサービス以外に"sc qc" コマンドはドライバのタイプは対応していないからです。
[SC] OpenService FAILED 1060:
指定されたサービスはインストールされたサービスとして存在しません。
(ご注意) 本サイト内の内容を使用して発生したいかなる時間的損害、金銭的損害あるいはいかなる損害に対して、いかなる人物も一切の責任を負いません。あくまでも個人の判断で使用してください。 本ページは独自に調査をしたアンオフィシャル(非公式)な内容です。内容に誤りがある可能性や仕様変更により内容が不正確になる可能性があります。 本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)
Copyright(c) TOOLJP.COM 1999-2024