如何检查进程是否作为Windows服务运行

时间:2011-05-21 21:26:55

标签: winapi

我在C中做了一些代码,我希望我的代码能够确定它是作为Windows服务运行还是作为普通应用程序运行,Windows服务在Windows Vista 7和Server 2008上的会话0上运行的AFAIK我不确定我们是否使用ntdll的非文档接口查询进程信息会对它有所帮助,就像我们得到PEB一样。

提前致谢。

3 个答案:

答案 0 :(得分:1)

枚举进程,使用QueryServiceStatusEx并查找是否有任何进程与当前进程ID匹配

答案 1 :(得分:1)

如果您将进程作为服务运行,我相信您应该调用StartServiceCtrlDispatcher。只需查看ERROR_FAILED_SERVICE_CONTROLLER_CONNECT的返回代码即可。这将告诉您是否将该过程作为服务运行。

答案 2 :(得分:0)

您可以查询SECURITY_SERVICE_RID的进程标记。