gpt4 book ai didi

c++ - 创建 Windows 服务和批处理文件

转载 作者:行者123 更新时间:2023-11-28 08:01:35 24 4
gpt4 key购买 nike

我想创建将在启动时运行批处理文件的 Windows 服务。我知道像 createservice 这样的 API,但我想要的是当我从 Service Control ManagerStart service 我想调用我的批处理文件使用参数 start 并且当我说停止时我想使用 stop 参数调用同一个批处理文件

最佳答案

每当您执行任何 Windows 服务操作(例如启动/停止/暂停服务)时,您通过 RegisterServiceCtrlHandler() 注册的服务主 Controller 处理函数都会收到 SERVICE_CONTROL_PAUSE、SERVICE_CONTROL_CONTINUE、SERVICE_CONTROL_STOP 等消息...

您可以创建单独的函数来调用具有不同输入参数的 bat 文件,并且可以在收到适当的服务消息时调用这些函数。

void ServiceMainCntrlHandler(无符号长请求){ 切换(请求) { /* 收到服务暂停信号 */ 案例 SERVICE_CONTROL_PAUSE: //将服务当前状态更改为暂停 ServiceStatus.dwCurrentState = SERVICE_PAUSED; SetServiceStatus (hStatus, &ServiceStatus);

  // TODO: Call appropriate function
break;

/* Received service continue signal */
case SERVICE_CONTROL_CONTINUE:
// Change the service current status to started
ServiceStatus.dwCurrentState = SERVICE_RUNNING;
SetServiceStatus (hStatus, &ServiceStatus);

// TODO: Call appropriate function
break;

/* Received service stop signal */
case SERVICE_CONTROL_STOP:
// Change the service current status to stopped
ServiceStatus.dwWin32ExitCode = 0;
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
ServiceStatus.dwCheckPoint = 0;
ServiceStatus.dwWaitHint = 0;
SetServiceStatus (hStatus, &ServiceStatus);

// TODO: Call the function which will invoke the bat file with input parameter as "stop"
break;
default: break;


关于c++ - 创建 Windows 服务和批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11326151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com