2011-05-21 129 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

相關問題