網上大把文章寫到C#獲取當前路徑的方法以下:spa
// 獲取程序的基目錄。 System.AppDomain.CurrentDomain.BaseDirectory // 獲取模塊的完整路徑。 System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName // 獲取和設置當前目錄(該進程從中啓動的目錄)的徹底限定目錄。 System.Environment.CurrentDirectory // 獲取應用程序的當前工做目錄。 System.IO.Directory.GetCurrentDirectory() // 獲取和設置包括該應用程序的目錄的名稱。 System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase // 獲取啓動了應用程序的可執行文件的路徑。 System.Windows.Forms.Application.StartupPath // 獲取啓動了應用程序的可執行文件的路徑及文件名 System.Windows.Forms.Application.ExecutablePath
我之前寫的代碼中獲取當前路徑基本上都是使用的System.Environment.CurrentDirectory。code
可是最近在用另一個程序A去調用之前的程序B的時候就出現問題了,程序A的做用只是單純調取程序B的exe文件,在B執行過程當中老是真到當前路徑這塊就出現了問題,實際找到的路徑是程序A的路徑。orm
程序A目錄:D:\a
程序B目錄:D:\b
當程序A調用程序B時,程序B中的Environment.CurrentDirectory結果是D:\a,而不是D:\b!!
當遇到這樣的狀況時,我本身的解決方案是:進程
把全部System.Environment.CurrentDirectory改爲System.AppDomain.CurrentDomain.BaseDirectory。io
網上也有不少人說針對winform能夠改爲Application.StartupPath。table
C# WinForm中AppDomain.CurrentDomain.BaseDirectory與Application.StartupPath的區別示例以下:form
1. AppDomain.CurrentDomain.BaseDirectory 返回結果爲: D:\xxx\ Application.StartupPath 返回結果爲: D:\xxx 2. Application.StartupPath 只能用於WinForm窗體中,而AppDomain.CurrentDomain.BaseDirectory既能夠用於WinForm窗體中,也能夠用於類庫DLL文件中。