[英]Getting Application Path - WPF versus Windows Service
我需要知道一種可靠的方法,可以確定Windows服務是從哪個文件夾啟動的。 確定它的方式似乎與您在WPF應用程序中確定它的方式不同。
更多詳細信息(可選閱讀):
我有一個WPF應用程序和Windows服務都使用的嵌入式sql數據庫。
在開發過程中,這兩個項目到數據庫的相對路徑都不同,因為它們在訪問同一嵌入式數據庫時都從自己的調試目錄運行。
現在,我正在嘗試創建一個安裝程序。 我已經將Windows服務可執行文件和wpf應用程序可執行文件都移到了相同的根目錄。
在wpf應用程序中,我成功創建了指向嵌入式數據庫的數據庫連接字符串,但是在Windows服務中,我未成功創建此連接字符串。
使用Assembly.GetEntryAssembly獲取主裝配。 在這里,您將擁有Location屬性,可以告訴您代碼的安裝位置。
請注意,服務的當前目錄為c:\\ windows \\ system32(假定默認安裝目錄)。
要獲取Windows服務的安裝目錄,可以使用:
private string GetExeDir()
{
System.Reflection.Assembly ass = System.Reflection.Assembly.GetExecutingAssembly();
string codeBase = System.IO.Path.GetDirectoryName(ass.CodeBase);
System.Uri uri = new Uri(codeBase);
return uri.LocalPath;
}
我認為您是從錯誤的方向攻擊問題。 我將在WPF應用程序和Windows Service的配置文件中都可以配置數據庫的路徑。 然后,您的代碼只需使用配置文件中的路徑構建連接字符串。
另外,您可能會考慮使用環境變量並在安裝程序中設置該環境變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.