3

我的远程服务在我的 32 位 Server 2008 上运行良好,但是当我尝试在我的 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。

我已经在网上搜索了所有内容,但找不到任何关于它返回的原因。

4

2 回答 2

4

我很确定我找到了问题所在。

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

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

一旦我将 32 位服务 .exe 复制到 Windows\SysWOW64 并运行它,服务就会启动!:-)

于 2012-11-25T19:29:21.167 回答
-2

从 \windows\system32 运行服务可执行文件

于 2016-07-01T15:54:12.037 回答