1. 程式人生 > 其它 >關於C#獲取應用程式的絕對工作路徑問題

關於C#獲取應用程式的絕對工作路徑問題

技術標籤:C#開發c#windows

C#取應用程式的絕對工作路徑

方法1:

public static string GetAppPath() {
      string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
      Regex r = new Regex(@"^[Ff][Ii][Ll][Ee][:][\\]([\S\s]*)");
      Match m = r.Match(appPath);
      if(m.Success) {
        appPath=m.Groups[1].Value;
      }
      return appPath;
}

該方法是取應用程式檔案物理存放目錄。不論是在登錄檔開機啟動項還是Windows服務執行程式,取出來的結果均一致。

方法2:

Environment.CurrentDirectory

當程式是手動點開執行的話,取出來的路徑是應用程式檔案物理存放目錄。但當程式在Windows服務或開機自啟動裡執行的話則取出來是C:\Windows\System32。

方法3:

Application.StartupPath

當程式是手動點開執行的話,取出來的路徑是應用程式檔案物理存放目錄。這個方法更奇怪:Window10之前的系統(如Win7\Xp\WindowServer2008等)上把程式做這服務執行或開機自啟的話呼叫該方法取出來是C:\Windows\System32。Win10版本的系統不論在服務裡、開機自啟裡呼叫該方法都是應用程式檔案物理存放目錄。

綜上所榜,推薦用第一個方法,這樣不論程式在哪裡呼叫,取出來的程式路徑均一致。