簡體   English   中英

獲取應用程序路徑-WPF與Windows Service

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM