3

私のリモート サービスは Server 2008、32 ビットでは正常に動作しますが、Windows 7 マシンで実行しようとすると、StartService() が ERROR_FILE_NOT_FOUND で失敗します。

OpenSCManager()、CreateService()、QueryServiceStatus()、および OpenService() はすべて成功を返しますが、StartService() は失敗します。

SDK Samples\WinBase\Service から Service をコンパイルし、Win 7 マシンの Windows\system32 ディレクトリにコピーして、「-install」で実行しました。「SC start」で起動しようとすると、同じエラーが返されます。

SCからの情報は次のとおりです。

C:\Windows\System32>sc query SimpleService

SERVICE_NAME: SimpleService
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 1077  (0x435)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0


C:\Windows\System32>sc qc SimpleService
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: SimpleService
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 3   DEMAND_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : C:\Windows\System32\ServiceSvc.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : Simple Service
        DEPENDENCIES       :
        SERVICE_START_NAME : LocalSystem


C:\Windows\System32>sc start SimpleService
[SC] StartService FAILED 2:

The system cannot find the file specified.

Win 7 マシンで xCmd.exe を実行したところ、同様のタイプのリモート サービスが実行され、ウイルスの警告が表示されましたが、それでも同じエラーが返されました。

許可の問題であれば、おそらく ERROR_ACCESS_DENIED が返されると確信しています。

私はネット全体を検索しましたが、なぜそれを返すのかについて何も見つかりません。

4

2 に答える 2

4

私は問題を見つけたと確信しています。

アプリが WOW64 で実行されているかどうかを検出するコードを見つけ、それが true を返しました。それは 64 ビット Windows 7 マシンで実行されていました。

WOW64 で実行している場合、system32 ではなく Windows\SysWOW64 に移動します。

32 ビットの Service .exe を Windows\SysWOW64 にコピーして実行すると、サービスが開始されました。:-)

于 2012-11-25T19:29:21.167 に答える
-2

\windows\system32 からサービス実行可能ファイルを実行します

于 2016-07-01T15:54:12.037 に答える