Nic*_*ick 15 c++ windows-services
我知道这可以在C#/ .Net中完成,但我想知道是否可以调用Windows API吗?
我有一个服务将服务DHCP请求,当我想更新我需要停止服务的服务的配置,重写其INI文件,然后再次启动服务.
任何帮助赞赏!
Fer*_*cio 30
有时您想从服务本身重新启动服务。这个解决方案对我有用。为清楚起见,我省略了相当琐碎的计时器代码。请注意,此解决方案之所以有效,仅是因为调用方是一项服务并在较高级别上运行。
void Watchdog::OnTimeout()
{
STARTUPINFO si = { };
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
PROCESS_INFORMATION pi = { };
// is modified by the call to CreateProcess (unicode version).
TCHAR szCmdLine[] = _T("cmd.exe /C \"net stop <yourservicenamehere> & net start <yourservicenamehere>\"");
// send shell command to restart our service.
if (!CreateProcess(NULL, szCmdLine, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi))
{
// do some error reporting...
LOG("*** ERROR *** Watchdog timeout. Restart attempt failed. Last error: 0x%x\n", GetLastError());
}
}
Run Code Online (Sandbox Code Playgroud)