"%1 は有効な Win32 アプリケーションではありません。" というエラー メッセージがサービスの開始時に表示され、イベント ID 7000 が発生する


現象


コンピューターにインストールされている 1 つまたは複数のサービスが開始せず、以下のいずれかの問題が発生します。
  • 次のエラー メッセージが表示されます。
    エラー 193: %1 は有効な Win32 アプリケーションではありません。
    かつ
  • 開始しない各サービスについて、システム イベント ログに以下のイベントが記録されます。
イベント ID: 7000
ソース: サービス コントロール マネージャ
種類: エラー
説明:
ServiceName サービスは次のエラーのため開始できませんでした: %1 は有効な Win32 アプリケーションではありません。

原因


この問題は、サービスの実行可能ファイルのパスに空白が含まれている場合に発生することがあります。

Windows はサービスを開始するとき、サービスのパスを左から右に解析します。 以下の両方の条件に該当する場合、Windows は、サービスの実行可能ファイルを見つけて実行する前に、以下のファイルやフォルダーを見つけて実行することがあります。
  • サービスの実行可能ファイルのパスに空白が含まれています。
  • コンピューターのハード ディスクに、サービスの実行可能ファイルのパスに含まれるファイルやフォルダーと同じ名前のファイルやフォルダーが存在します。
たとえば、サービスの実行可能ファイルのパスが C:\Program Files\MyProgram\MyService.exe であり、ハード ディスクに C:\Program という名前のフォルダーも存在する場合、Windows は、C:\Program Files\MyProgram\My Service.exe ファイルの前にハード ディスクの C:\Program フォルダーを見つけて実行しようとします。

解決方法


重要: このセクション、方法、またはタスクには、レジストリの変更方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 万一に備えて、編集の前にレジストリをバックアップしてください。 問題が発生した場合でも、レジストリを復元できます。 レジストリのバックアップ方法および復元方法の詳細を参照するには、以下のサポート技術情報番号をクリックしてください。

322756 Windows でレジストリをバックアップおよび復元する方法
 

この問題を解決するには、Windows レジストリの以下のエントリを引用符で囲みます。<サービス名> はサービスの名前です。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName>\ImagePath

ImagePath エントリには、サービスの実行可能ファイルのパスが含まれています。 サービスの ImagePath エントリを引用符で囲むには、以下の手順を実行します。

  1. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。
  2. [名前] ボックスに「regedit」と入力し、[OK] をクリックします。
  3. 以下のレジストリ キーを見つけてクリックします。<サービス名> はサービスの名前です。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName>.
    たとえば、サービス名が MyService であれば、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService キーを見つけます。
  4. 右側のウィンドウで [ImagePath] をダブルクリックします。
  5. [値のデータ] ボックスで、サービスの実行可能ファイルの完全なパスを引用符で囲みます。

    たとえば、MyService サービスのパスが C:\Program Files\MyProgram\MyService.exe である場合、MyService サービスの [値のデータ] ボックスのエントリを
    次のように変更します。
    "C:\Program Files\MyProgram\MyService.exe"
  6. [OK] をクリックして、レジストリ エディタを終了します。