StartService()和'sc start',返回ERROR_FILE_NOT_FOUND

时间:2012-11-24 21:13:51

标签: windows-services

我的远程服务在我的Server 2008上工作正常,32位,但是当我尝试在我的Windows 7机器上运行它时,StartService()失败并返回ERROR_FILE_NOT_FOUND。

OpenSCManager(),CreateService(),QueryServiceStatus()和OpenService()都返回成功,但StartService()失败。

我甚至从SDK Samples \ WinBase \ 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。

我在网上搜索过,找不到任何关于它返回原因的内容。

2 个答案:

答案 0 :(得分:4)

我很确定我发现了这个问题。

我找到了检测应用程序是否在WOW64中运行的代码 它返回true,它在64位Windows 7机器上运行。

当它在WOW64中运行时,它会转到Windows \ SysWOW64而不是system32。

将32位Service .exe复制到Windows \ SysWOW64后 并运行它服务开始了! : - )

答案 1 :(得分:-2)

从\ windows \ system32

运行服务可执行文件