2010-10-12 357 views
1

我有一個C++ Windows服務,並且我想要訪問與服務的可執行文件相同的目錄中的可執行文件(通過系統函數)。我想要做到這一點,我需要找到該目錄,以便我可以參考目標可執行文件的路徑。如何在代碼中找到安裝服務的目錄?如何獲取C++ Windows服務的安裝目錄?

+0

澄清,你的意思是從正在運行的服務,而不是從其他任意應用程序,正確的? – 2010-10-12 23:48:01

+0

這是正確的。 – 2010-10-13 14:15:30

回答

2

取決於。

如果是在服務範圍內,您始終可以使用GetModuleFileName,這會生成完全合格的路徑。

如果來自另一個程序,那麼因爲它是服務,您可以檢查該服務的註冊表信息。

3

您可以使用QueryServiceConfig()函數。二進制文件的路徑存儲在QUERY_SERVICE_CONFIG結構的lpBinaryPathName字段中。

+2

+1 - 這是獲得「官方」信息的最佳方式 – 2010-10-13 01:14:28

+0

該功能實際上確實從註冊表獲取信息。但問題是,你必須有一個服務處理,我根本不喜歡。服務名稱應該足夠了。 – 2010-10-13 12:32:48

+1

@Vlad:如果你去註冊表路由,你將需要一個註冊表項的句柄。 Windows API中的大部分內容都是通過句柄訪問的。 – Ferruccio 2010-10-13 14:44:01