2011-05-21 124 views
2

我正在做一些C代码,我希望我的代码能够确定它作为Windows服务运行还是作为普通应用程序运行,AFAIK即windows服务在windows vista,7和server 2008的session 0上运行。我不确定我们是否使用ntdll的非文档接口来查询进程信息会对它有所帮助,就像我们获得PEB一样。如何检查一个进程是否作为Windows服务运行

在此先感谢。

+0

http://www.creativecodedesign.com/node/49 – 2011-05-21 21:35:01

+0

请参阅http://stackoverflow.com/questions/2668851/how-do-i-detect-that-my-application-is-running-as-服务或交互式服务 – 2011-05-22 10:37:14

回答

1

我相信你应该打电话StartServiceCtrlDispatcher如果你正在运行一个进程作为服务匹配当前的进程ID。只需检查返回码ERROR_FAILED_SERVICE_CONTROLLER_CONNECT。这将告诉您是否将该流程作为服务运行。

0

您可以查询进程标记为SECURITY_SERVICE_RID

+0

不,这是不可靠的,因为如果服务是从命令行启动的,例如它不会有这个令牌。 – bkausbk 2012-02-28 07:41:33

相关问题