我在C中做了一些代码,我希望我的代码能够确定它是作为Windows服务运行还是作为普通应用程序运行,Windows服务在Windows Vista 7和Server 2008上的会话0上运行的AFAIK我不确定我们是否使用ntdll的非文档接口查询进程信息会对它有所帮助,就像我们得到PEB一样。
提前致谢。
答案 0 :(得分:1)
枚举进程,使用QueryServiceStatusEx
并查找是否有任何进程与当前进程ID匹配
答案 1 :(得分:1)
如果您将进程作为服务运行,我相信您应该调用StartServiceCtrlDispatcher
。只需查看ERROR_FAILED_SERVICE_CONTROLLER_CONNECT
的返回代码即可。这将告诉您是否将该过程作为服务运行。
答案 2 :(得分:0)
您可以查询SECURITY_SERVICE_RID的进程标记。