c++ - 服务和注册

标签 c++ windows

我在理解服务和注册表之间的关系时遇到了问题。

我的任务是将我的 Windows C++ 程序从简单的应用程序转换为服务。 我读到我需要产生更多的功能,如:开始停止恢复安装。 问题是:

  1. 为什么我需要注册表?

  2. 如何进入新程序?

  3. 除了这些方法,我还需要对注册表做什么?我怎么进入里面?

  4. 进入服务需要写脚本吗?

我读过但我只是不明白,任何回答和/或一些很好的解释链接都将不胜感激。

谢谢,

最佳答案

我不知道服务和注册表之间有任何记录在案的关系。服务可以使用注册表来存储它们的设置,就像任何其他应用程序一样,但它们不是必需的。

  1. 正式来说,您不需要注册表。您只需使用相关的 API 函数安装服务即可。作为其实现的一部分,API 函数会创建注册表项,操作系统稍后会使用这些注册表项来了解何时以及如何启动您的服务,但我认为这些键的记录并没有期望开发人员会手动修改它们,所以不要不用担心他们。

    但是,如果您的程序使用注册表来存储设置,您将需要了解您的服务运行的帐户,因为这会影响您的程序可以访问注册表的哪些区域。

  2. 调用 CreateService 安装您的服务.在程序的安装程序中执行此操作。您还可以让您的服务在检测到自己正在使用某个命令行开关(例如 -i)运行时自行安装。要卸载您的服务,请调用 OpenService然后 DeleteService .无论哪种情况,您都需要调用 OpenSCManager第一的。有关如何调用这些函数的更多信息,请参阅 MSDN。

    或者,您可以 use the sc command to create and delete your service .

  3. 正如我上面提到的,您不需要对注册表执行任何操作。只需使用 API 安装和卸载您的服务,剩下的交给操作系统。

  4. 您不需要编写任何脚本来启动您的服务。操作系统已经知道如何启动它(因为它已安装)。如果您的服务是用户想要频繁启动和停止的,那么他们可以使用 net 而不是使用服务控制面板。或 sc命令。

关于c++ - 服务和注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1465494/

相关文章:

c++ - 从文件中获取特定的 c++ 函数而不包含文件

c++ - 如何从 IP Camera 的 Motion Jpeg Stream 中提取图像?

c++ - 使用Visual Studio在C++中嵌入Julia

c++ - 复制文件错误代码 2

c++ - 字节数组赋值

c++ - 基于 malloc/free 的 STL 分配器

windows - 何时使用 Wave 可扩展格式?

windows - 使用 ietd 从 iSCSI 目标启动的 Windows 的故障转移

windows - 谁为 DLL 分配堆?

c++ - 如何通过STL算法获得两个数组( vector )的组合?