我在C#中編寫了一個windows服務,它產生了我正在編寫的另一個應用程序的多個實例。應用程序有可能安裝在機器上的任何位置。讓服務知道應用程序位於何處的最佳方式是什麼?什麼是確定應用程序位置的正確方法?
6
A
回答
6
如果你的意思是服務啓動不同應用程序,然後,選項:
- 使用配置文件配置服務;把路徑有
- 安裝過程中把東西在註冊表
- 使用一個類似於COM/COM +註冊
- 考慮的GAC如果其他應用程序是.NET(雖然我不是一個球迷。 ..)
- 環境變量?
就我個人而言,我喜歡配置文件選項;它是簡單和易於維護,並允許多個獨立的(並排側)的服務和應用程序安裝
1
using System.IO;
using System.Windows.Forms;
string appPath = Path.GetDirectoryName(Application.ExecutablePath)
那是一個應用程序(以上)。
一個asp.net項目:
using System.Web;
HttpContext.Current.Server.MapPath("place arguments here");
8
如果您需要找到您的服務已安裝到你可以使用下面的代碼
this.GetType().Assembly.Location
的文件夾
如果你需要找到一些其他的應用程序安裝到您的文件夾應該到Windows Installer
[DllImport("MSI.DLL", CharSet = CharSet.Auto)]
private static extern UInt32 MsiGetComponentPath(
string szProduct,
string szComponent,
StringBuilder lpPathBuf,
ref int pcchBuf);
private static string GetComponentPath(string product, string component)
{
int pathLength = 1024;
StringBuilder path = new StringBuilder(pathLength);
MsiGetComponentPath(product, component, path, ref pathLength);
return path.ToString();
}
1
System.Environment.CurrentDirectory請求
1
在安裝期間編寫註冊表變量,通過這種方式,在提供升級時,您可以讀取先前寫入的值並將其默認值讀回到用戶先前選擇的文件夾。
相關問題
- 1. 發佈nodejs應用程序的正確方法是什麼?
- 2. 什麼是結束.Net應用程序的正確方法?
- 3. 什麼是打包企業應用程序的正確方法
- 4. iPhone:離開應用程序的正確方法是什麼?
- 5. 什麼是授權Stormpath應用程序的正確方法?
- 6. 調試pedestal.io應用程序的正確方法是什麼?
- 7. 什麼是恢復Android Phonegap應用程序的正確方法?
- 8. 在位掩碼中設置位的正確方法是什麼?
- 9. 什麼是使用svg.js動畫位置的正確方法
- 10. 在Meteor應用程序中設置Textarea的值的正確方法是什麼?
- 11. 配置ASP.NET Core應用程序的正確順序是什麼?
- 12. 什麼是定製安裝程序的正確方法
- 13. 什麼是存儲和檢索應用程序設置的正確方法?
- 14. 分發定製iphone應用程序的正確方法是什麼?
- 15. 以編程方式退出MFC應用程序的正確方法是什麼?
- 16. 確定AJAX調用成功的正確方法是什麼?
- 17. 什麼是告訴servlet文件位置的正確方法?
- 18. Python,確定Unix進程是否正在運行的正確方法是什麼?
- 19. 實用程序類 - 什麼是正確的方法?
- 20. 在Selenide/Selenium中定位模板的正確方法是什麼?
- 21. 什麼是定位CSS懸停菜單的正確方法?
- 22. 將遠程AngularJS應用程序嵌入網頁的正確方法是什麼?
- 23. 用我的應用程序部署Corecon API的正確方法是什麼?
- 24. 確定Azure VM啓動時間的正確方法是什麼?
- 25. 確保單個課程實例的正確方法是什麼?
- 26. 什麼是設置日程表的正確方法?
- 27. 什麼是使用CodedUITest測試WPF應用程序的正確方法
- 28. 在Android應用程序中使用ResourceBundle.getBundle()的正確方法是什麼?
- 29. 什麼是從應用程序調用Rails API的正確方法
- 30. 將用戶登出Rails應用程序的正確方法是什麼?
這不適用於沒有表單的服務 – Treb 2009-07-14 21:16:58
服務可以引用Windows窗體而沒有問題。上面的行實際上並沒有使用任何形式,應該沒問題。但是有更簡單的方法來獲取代碼庫! – 2009-07-14 21:18:21