我正在做一些C代碼,我希望我的代碼能夠確定它作爲Windows服務運行還是作爲普通應用程序運行,AFAIK即windows服務在windows vista,7和server 2008的session 0上運行。我不確定我們是否使用ntdll的非文檔接口來查詢進程信息會對它有所幫助,就像我們獲得PEB一樣。如何檢查一個進程是否作爲Windows服務運行
在此先感謝。
我正在做一些C代碼,我希望我的代碼能夠確定它作爲Windows服務運行還是作爲普通應用程序運行,AFAIK即windows服務在windows vista,7和server 2008的session 0上運行。我不確定我們是否使用ntdll的非文檔接口來查詢進程信息會對它有所幫助,就像我們獲得PEB一樣。如何檢查一個進程是否作爲Windows服務運行
在此先感謝。
枚舉過程中,使用QueryServiceStatusEx
並發現如果任何進程
我相信你應該打電話StartServiceCtrlDispatcher
如果你正在運行一個進程作爲服務匹配當前的進程ID。只需檢查返回碼ERROR_FAILED_SERVICE_CONTROLLER_CONNECT
。這將告訴您是否將該流程作爲服務運行。
您可以查詢進程標記爲SECURITY_SERVICE_RID。
不,這是不可靠的,因爲如果服務是從命令行啓動的,例如它不會有這個令牌。 – bkausbk 2012-02-28 07:41:33
http://www.creativecodedesign.com/node/49 – 2011-05-21 21:35:01
請參閱http://stackoverflow.com/questions/2668851/how-do-i-detect-that-my-application-is-running-as-服務或交互式服務 – 2011-05-22 10:37:14