gpt4 book ai didi

c - 如何检测进程是否作为服务安装

转载 作者:可可西里 更新时间:2023-11-01 09:28:28 25 4
gpt4 key购买 nike

我已经创建了一个 win32 应用程序,它应该作为服务和应用程序运行。当我单击并运行它时,它应该作为应用程序运行。当从服务 Controller 调用时,它应该检测到它并分支以作为服务运行。我如何在不传递参数的情况下检测到这一点?阿布扎德先生

最佳答案

传统(也是最简单)的方法是调用 StartServiceCtrlDispatcher()并且,如果失败,则假设您没有作为服务运行。这在实践中效果很好,尽管从技术上讲我不相信 Microsoft 保证它会这样做。

如果您想要更稳健的方法,您可以 examine your security token查看它是否包含 Service SID , S-1-5-6。但是,为了使其正常工作,您必须确保该服务配置了 non-zero SID type。 ,即使用 SERVICE_SID_TYPE_UNRESTRICTEDSERVICE_SID_TYPE_RESTRICTED

注意:我正在尝试按照所写的方式回答问题,但更好的解决方案是按照评论中的讨论设置命令行参数。您可以在 CreateService() 的 lpBinaryPathName 参数中包含命令行参数。您的 main() 函数将以与普通命令行应用程序相同的方式接收这些参数。

关于c - 如何检测进程是否作为服务安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33023625/

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