将 UNIX 守护程序移植到 Windows 服务

Porting a UNIX daemon to a Windows Service

我用 C 编写了一个 UNIX 守护程序,我想将其移植到 Windows。 我的目标是 Windows 10.

当我搜索如何创建 Windows 服务时,遇到了 approach using .NET and C# 我都想不惜一切代价避免的问题。

我怎样才能在 C 语言中创建一个简单直接的服务,而不需要 Microsoft 试图卸载给我的厨房水槽?如果我真的必须,我会考虑 C++,但 C# 和 .Net 太过分了。

我也可以切换到不同的编译器,如果在 VisualStudio 之外更容易的话。 (目前我使用的是 Visual Studio 2019,最新更新。)

注意:我的 Linux 守护程序只有一个依赖项:libhidapi,可用于 Windows。

更新

没有可用的 C++ 模板。

这归结为创建两个不同的应用程序 (.exe)

一个到 运行 使用 StartServiceCtrlDispatcher() 的服务,其中调度函数调用 RegisterServiceCtrlHandlerEx() 来注册控制器。

一个使用 CreateService()

安装服务

可以跳过安装程序,使用 sc 命令行实用程序,它是 OS.

的一部分

参见 full example