2012-05-22 89 views
1

我編寫了一個應用程序並使用服務啓動它。我的查詢類似於How can a Windows Service determine its ServiceName?從服務啓動的可執行文件中獲取服務名稱

有沒有一種方法可以在運行時確定(使用C++)可執行文件中的可執行文件,該文件是啓動該可執行文件的服務的名稱。

只需要一個指向正確的方向。

感謝

+0

這裏有兩個不同的問題:第一,如何獲得啓動exe的進程。其次,如何獲取進程的服務名稱。 –

+0

只有1個問題。當我的服務啓動一個exe文件時,我想知道啓動該可執行文件的服務名稱(在exe文件中)是什麼。 – ababeel

+0

*就像我說的*,這是一個兩步過程,因爲首先你需要確定啓動你的exe的進程(也就是你的服務的PID),然後你需要確定與該進程相關的服務的名稱。 –

回答

0

你可以使用EnumServicesStatus獲得所有服務的列表,然後過濾那些,我想最好的方法是比較二進制名稱。然後撥打QueryServiceConfig獲取包含服務名稱的服務配置。

我希望這是你要找的。 當然要做到這一點,您的應用程序必須以Windows Vista和7的管理員身份運行,否則OpenSCManager的調用肯定會失敗。

編輯: 另一種快速的方式是要麼必須在服務和可執行之間或在一個單獨的配置文件共享的DEF文件硬編碼的服務名稱,因此,消除了SCMANAGER

的所有忙亂
+0

您仍然需要確定哪些進程啓動了exe,然後跟蹤該進程的服務名稱。 –

相關問題