c++ - C++服务的自动延迟启动

标签 c++ visual-c++ service windows-installer

我正在尝试创建一个运行可执行文件 .exe 的服务。问题是服务没有启动 .exe,每次我重新启动。它缺乏一致性。但是当我手动将启动类型设置为自动(延迟启动)时,它工作得很好。如何通过 C++ 将此启动类型设置为自动(延迟启动)?

这是我用来自动启动的代码:

我应该如何将“Service_auto_start”更改为自动(延迟启动)?

SC_HANDLE schService = CreateService
(
    schSCManager,                   /* SCManager database      */
    pName,                          /* Name of service         */
    pName,                          /* Service name to display */
    SERVICE_ALL_ACCESS,             /* Desired access          */
    SERVICE_WIN32_OWN_PROCESS|
      SERVICE_INTERACTIVE_PROCESS , /* Service type            */
    SERVICE_AUTO_START,             /* Start type              */
    SERVICE_ERROR_NORMAL,           /* Error control type      */
    pPath,                          /* Service's binary        */
    NULL,                           /* No load ordering group  */
    NULL,                           /* No tag identifier       */
    NULL,                           /* No dependencies         */
    NULL,                           /* LocalSystem account     */
    NULL
);

最佳答案

ChangeServiceConfig2 函数可以做到这一点。

BOOL WINAPI ChangeServiceConfig2(
  __in          SC_HANDLE hService,
  __in          DWORD dwInfoLevel,
  __in          LPVOID lpInfo
);

dwInfoLevel 设置为 SERVICE_CONFIG_DELAYED_AUTO_START_INFO 以将启动类型修改为延迟自动启动。

请注意,Windows Server 2003 和 Windows XP 不支持此值。 此外,这只是潜水描述而不是延迟服务启动

关于c++ - C++服务的自动延迟启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16457563/

相关文章:

c++ - 断言:指针必须来自 'local' 堆

c++ - 带有额外 ":"或 "-"c++ 的文件名

android - 服务被销毁后的共享偏好

c# - Sharepoint 服务将子站点从私有(private)站点复制到另一个站点

c++ - 如何将静态库添加到 Visual Studio 项目

c++ - 如何在Excel编程中使用 "Find"函数?

c++ - 我的 Visual C++ 程序可以监听它自己的调试输出吗?

c++ - 如何用顶级 const 解决这个问题?

java - 创建服务以检测用户的任何操作

c++ - fseeko, fseeko64; ftello、ftello64 Visual C 等效项