gpt4 book ai didi

c++ - 如何将 dll 作为服务运行?

转载 作者:搜寻专家 更新时间:2023-10-30 23:55:43 24 4
gpt4 key购买 nike

我知道如何编写一个 dll 以及如何编写一个服务以及如何使用 rundll32 运行一个 dll,但现在我想编写一个在 Windows 中作为服务安装的 dll

我不知道这是否可行,或者应该导出 dll 中的哪个函数?

如何将 dll 作为服务安装和运行?

最佳答案

有几种不同的方法可以将 DLL 作为服务运行。您可以:

  1. 编写您自己的 .exe 服务并让它根据需要加载您的 DLL。这是推荐的方法。

  2. 使用 Microsoft 的 SVCHOST.EXE 来托管您的 DLL。让你的 DLL 导出 ServiceMain() 功能,添加一个ServiceDLL将服务注册表项的值指向您的 DLL,将您的服务名称添加到 SVCHOST 注册表项中的新组,然后设置 svchost -k <GroupName>作为您服务的可执行文件。有关详细信息,请参阅这些文章:

    A description of Svchost.exe

    Getting Started with SVCHOST.EXE Troubleshooting

    Tricks with SVCHOST.EXE

    The Service Host

    但是请注意,MSDN 的 Service Programs文档警告不要使用这种方法:

    A service program created with the type SERVICE_WIN32_SHARE_PROCESS contains code for more than one service, enabling them to share code. An example of a service program that does this is the generic service host process, Svchost.exe, which hosts internal Windows services. Note that Svchost.exe is reserved for use by the operating system and should not be used by non-Windows services. Instead, developers should implement their own service hosting programs.

  3. 将您的服务编写为导出 DriverEntry() 内核模式驱动程序功能,并添加一个ServiceDLL指向 DLL 文件的服务注册表项中的值。有关详细信息,请参阅本文:

    Driver Development Part 1: Introduction to Drivers .

    除非您正在设计自己的硬件,否则我不推荐这种方法。

关于c++ - 如何将 dll 作为服务运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30554180/

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