我有一個C++ Windows服務,並且我想要訪問與服務的可執行文件相同的目錄中的可執行文件(通過系統函數)。我想要做到這一點,我需要找到該目錄,以便我可以參考目標可執行文件的路徑。如何在代碼中找到安裝服務的目錄?如何獲取C++ Windows服務的安裝目錄?
回答
您可以使用GetModuleFileName函數。請參閱Installing a Service示例。
取決於。
如果是在服務範圍內,您始終可以使用GetModuleFileName
,這會生成完全合格的路徑。
如果來自另一個程序,那麼因爲它是服務,您可以檢查該服務的註冊表信息。
正如其他人所說,GetModuleFileName()
可以做到這一點,但YMMV。最可靠的方法是從註冊表項HKLM\System\CurrentControlSet\Services\%ServiceName%\ImagePath
中讀取此信息,其中%ServiceName%
是您的服務的名稱。
有關使用C++檢查this的讀取註冊表的示例。
祝你好運!
您可以使用QueryServiceConfig()函數。二進制文件的路徑存儲在QUERY_SERVICE_CONFIG結構的lpBinaryPathName字段中。
+1 - 這是獲得「官方」信息的最佳方式 – 2010-10-13 01:14:28
該功能實際上確實從註冊表獲取信息。但問題是,你必須有一個服務處理,我根本不喜歡。服務名稱應該足夠了。 – 2010-10-13 12:32:48
@Vlad:如果你去註冊表路由,你將需要一個註冊表項的句柄。 Windows API中的大部分內容都是通過句柄訪問的。 – Ferruccio 2010-10-13 14:44:01
- 1. 如何使用C#找到Windows服務的安裝目錄?
- 2. Windows服務安裝 - 當前目錄
- 3. Windows服務安裝項目
- 4. 獲取c#中的安裝目錄
- 5. 如何安裝Windows服務
- 6. 如何獲取安裝目錄?
- 7. Windows服務 - 獲取當前目錄
- 8. 在Windows上安裝C#Windows服務7
- 9. 通過ManagedInstaller安裝Windows服務 - 如何安裝64位服務?
- 10. 安裝windows服務
- 11. 如何在遠程服務器上安裝C#Windows服務?
- 12. 如何從c中獲取Windows服務安裝文件夾的完整路徑#
- 13. 安裝Windows服務
- 14. Windows服務安裝
- 15. 檢測SQL服務器安裝目錄
- 16. 遠程安裝Windows服務
- 17. Windows服務安裝程序
- 18. Windows服務安裝程序C#
- 19. 錯誤安裝C#Windows服務
- 20. Windows服務安裝路徑C#
- 21. 如何獲取安裝/安裝項目中的當前工作目錄
- 22. 如何使用Java安裝Windows服務?
- 23. 如何在.NET中安裝Windows服務?
- 24. 如何安裝/運行Windows服務
- 25. 如何使用Qt安裝Windows服務?
- 26. 如何安裝MongoDB Windows服務
- 27. 如何用1個安裝項目安裝2個不同的Windows服務?
- 28. 獲取IIS的默認安裝目錄
- 29. WIX安裝windows服務
- 30. MSDeploy安裝windows服務?
澄清,你的意思是從正在運行的服務,而不是從其他任意應用程序,正確的? – 2010-10-12 23:48:01
這是正確的。 – 2010-10-13 14:15:30