我的远程服务在我的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。
我在网上搜索过,找不到任何关于它返回原因的内容。
答案 0 :(得分:4)
我很确定我发现了这个问题。
我找到了检测应用程序是否在WOW64中运行的代码 它返回true,它在64位Windows 7机器上运行。
当它在WOW64中运行时,它会转到Windows \ SysWOW64而不是system32。
将32位Service .exe复制到Windows \ SysWOW64后 并运行它服务开始了! : - )
答案 1 :(得分:-2)
从\ windows \ system32
运行服务可执行文件