【发布时间】:2020-08-06 16:19:05
【问题描述】:
我正在尝试创建一个将在系统启动时运行并立即启动它的服务。服务应该运行我的 exe 文件。 GetLastError 函数返回 1053 错误代码。
int main(void)
{
SC_HANDLE SC_manager_handle;
SC_HANDLE service_handle;
LPCTSTR binary_path = "C:\\Users\\User\\AppData\\file.exe";
LPCTSTR display_name = "ExampleService";
LPCTSTR service_name = "EXAMPLE_SERVICE";
SC_manager_handle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
puts("-----------------------");
if(SC_manager_handle == NULL)
puts("Open SM Manager: FAILED");
else
puts("SC Manager: SUCCESS");
service_handle = CreateService(SC_manager_handle, service_name, display_name, SERVICE_ALL_ACCESS ,SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, binary_path, NULL, NULL, NULL, NULL, NULL);
if(service_handle == NULL)
puts("Create Service: FAILED");
else
puts("Service Create: SUCCESS");
// running the exe file immediately
if(!StartService(service_handle, 0, NULL))
printf("Start Service: FAILED | ERROR: %d\n", GetLastError());
else
puts("Service Start: SUCCESS");
CloseServiceHandle(SC_manager_handle);
CloseServiceHandle(service_handle);
return 0;
}
【问题讨论】:
-
还有什么问题?
-
1053是 ERROR_SERVICE_REQUEST_TIMEOUT。您必须在实际的服务代码中对其进行调试。