一、獲取當前文件路徑
1.System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
獲取模塊的完整路徑,包括文件名。獲取得到的是Module的文件名,如果在VS2008的調試環境中,獲取的是 [程序名].vshost.exe的完整文件名。
例如:System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName = C:\Users\zhzhx\Documents\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.vshost.exe
(本例包括以下各個示例均為在本人電腦下操作得到,其中C:\\Users\\zhzhx\\Documents為“我的文檔”文件夾)
2.System.Environment.CurrentDirectory
獲取和設置當前目錄(該進程從中啟動的目錄)的完全限定目錄。
例如:System.Environment.CurrentDirectory = C:\Users\zhzhx\Documents\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug
3.System.IO.Directory.GetCurrentDirectory()
獲取應用程序的當前工作目錄。
例如:System.IO.Directory.GetCurrentDirectory() = C:\Users\zhzhx\Documents\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug
其中,2和3這兩個方法獲得的路徑是一樣的,獲得的是當前路徑,這個路徑不一定是程序所在的路徑。任何會改變當前路徑的方法都會改變它,例如:OpenFileDialog每換一次目錄就會改變它。因此,用這兩個方法獲取程序路徑並不可靠。
4. System.AppDomain.CurrentDomain.BaseDirectory
獲取當前 Thread 的當前應用程序域的基目錄,它由程序集沖突解決程序用來探測程序集。
例如:System.AppDomain.CurrentDomain.BaseDirectory = C:\Users\zhzhx\Documents\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\
5. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
獲取和設置包括該應用程序的目錄的名稱。
例如:System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase = C:\Users\zhzhx\Documents\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\
其中,4和5這兩個方法是可靠的獲取程序路徑的方法。返回的路徑最末以"\"結尾。可以方便的在后面加入任何Path。當然就算沒有也可以用Path.Combine來合並路徑以獲得想要的路徑。
6. System.Windows.Forms.Application.StartupPath
獲取啟動了應用程序的可執行文件的路徑,不包括可執行文件的名稱。
例如:System.Windows.Forms.Application.StartupPath = C:\Users\zhzhx\Documents\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug
這個方法也是可靠的獲取程序路徑的方法。不過返回的路徑最末並沒有"\"結尾。另外因為是Forms命名空間的。因此如果使用WPF還是不用的好。
7.System.Windows.Forms.Application.ExecutablePath
獲取啟動了應用程序的可執行文件的路徑及文件名。
例如:System.Windows.Forms.Application.ExecutablePath = C:\Users\zhzhx\Documents\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe
這個方法獲取的是執行程序的完整文件名。是最可靠的方式,只需要去掉程序文件名就可以獲得路徑。
8.System.Threading.Thread.GetDomain().BaseDirectory
獲取當前應用程序所在目錄的路徑,最后包含“\”。
System.Threading.Thread.GetDomain().BaseDirectory = C:\Users\zhzhx\Documents\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\
9.this.GetType().Assembly.Location
獲取當前進程的完整路徑,包含文件名(進程名)。
this.GetType().Assembly.Location = C:\Users\zhzhx\Documents\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe
二、獲取系統特殊文件夾路徑
System.Environment.GetFolderPath(SpecialFolder)
例如:
System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) = C:\Users\zhzhx\Desktop //邏輯桌面,而不是物理文件系統位置。
System.Environment.GetFolderPath(Environment.SpecialFolder.Programs) = C:\Users\zhzhx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs //包含用戶程序組的目錄。
System.Environment.GetFolderPath(Environment.SpecialFolder.Personal) = C:\Users\zhzhx\Documents //用作文檔的公共儲存庫的目錄。
System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) = C:\Users\zhzhx\Documents // “我的文檔”文件夾。
以下不再一一敘述,同上面所示,只是寫出各個Environment.SpecialFolder后綴名所對應的文件夾
Favorites,//用作用戶收藏夾項的公共儲存庫的目錄。
Startup,//對應於用戶的“啟動”程序組的目錄。
Favorites,//用作用戶收藏夾項的公共儲存庫的目錄。
Startup,//對應於用戶的“啟動”程序組的目錄。
Recent, //包含用戶最近使用過的文檔的目錄。
SendTo ,//包含“發送”菜單項的目錄。
StartMenu ,//包含“開始”菜單項的目錄。
MyMusic ,//“我的音樂”文件夾。
MyVideos , //文件系統目錄,充當屬於某個用戶的視頻的存儲庫。
DesktopDirectory , //用於物理上存儲桌面上的文件對象的目錄。
MyComputer ,//“我的電腦”文件夾。
NetworkShortcuts ,//文件系統目錄,包含“網上鄰居”虛擬文件夾中可能存在的鏈接對象。
Fonts ,//包含字體的虛擬文件夾。
Templates ,//用作文檔模板的公共儲存庫的目錄。
CommonStartMenu , //文件系統目錄,包含在所有用戶的“開始”菜單上都出現的程序和文件夾。此特殊文件夾僅對 Windows NT 系統有效。
CommonPrograms , // 存放多個應用程序共享的組件的文件夾。此特殊文件夾僅對 Windows NT、Windows 2000 和 Windows XP 系統有效。
CommonStartup ,//文件系統目錄,包含在所有用戶的“啟動”文件夾中都出現的程序。此特殊文件夾僅對 Windows NT 系統有效。
CommonDesktopDirectory , //文件系統目錄,包含在所有用戶桌面上出現的文件和文件夾。此特殊文件夾僅對 Windows NT 系統有效。
ApplicationData ,// 目錄,它用作當前漫游用戶的應用程序特定數據的公共儲存庫。
PrinterShortcuts ,//文件系統目錄,包含“打印機”虛擬文件夾中可能存在的鏈接對象。
LocalApplicationData ,// 目錄,它用作當前非漫游用戶使用的應用程序特定數據的公共儲存庫。
InternetCache ,//用作 Internet 臨時文件的公共儲存庫的目錄。
Cookies ,//用作 Internet Cookie 的公共儲存庫的目錄。
History ,//用作 Internet 歷史記錄項的公共儲存庫的目錄。
CommonApplicationData ,//目錄,它用作所有用戶使用的應用程序特定數據的公共儲存庫。
Windows ,//Windows 目錄或 SYSROOT。它與 %windir% 或 %SYSTEMROOT% 環境變量相對應。
System ,//“System”目錄。
ProgramFiles ,// “Program files”目錄。
MyPictures ,//“我的圖片”文件夾。
UserProfile ,// 用戶的配置文件文件夾。應用程序不應在此級別上創建文件或文件夾;它們應將其數據放在 System.Environment.SpecialFolder.ApplicationData所引用的位置之下。
SystemX86 ,//Windows“System”文件夾。
ProgramFilesX86 ,//“Program Files”文件夾。
CommonProgramFiles ,//用於應用程序間共享的組件的目錄。
CommonProgramFilesX86 ,// “Program Files”文件夾。
CommonTemplates ,//文件系統目錄,包含所有用戶都可以使用的模板。此特殊文件夾僅對 Windows NT 系統有效。
CommonDocuments ,//文件系統目錄,包含所有用戶共有的文檔。此特殊文件夾僅對裝有 Shfolder.dll 的 Windows NT 系統、Windows 95 和 Windows98 系統有效。
CommonAdminTools ,//文件系統目錄,包含計算機所有用戶的管理工具。
AdminTools ,//文件系統目錄,用於存儲各個用戶的管理工具。Microsoft Management Console (MMC) 會將自定義的控制台保存在此目錄中,並且此目錄將隨用戶一起漫游。
CommonMusic , //文件系統目錄,充當所有用戶共有的音樂文件的存儲庫。
CommonPictures ,//文件系統目錄,充當所有用戶共有的圖像文件的存儲庫。
CommonVideos ,//文件系統目錄,充當所有用戶共有的視頻文件的存儲庫。
Resources , //文件系統目錄,包含資源數據。
LocalizedResources ,//文件系統目錄,包含本地化資源數據。
CommonOemLinks ,//為了實現向后兼容,Windows Vista 中可以識別此值,但該特殊文件夾本身已不再使用。
CDBurning ,//文件系統目錄,充當等待寫入 CD 的文件的臨時區域。
三、操作環境變量
利用System.Environment.GetEnvironmentVariable()方法可以很方便地取得系統環境變量。
例如:
System.Environment.GetEnvironmentVariable("windir") = C:\Windows
System.Environment.GetEnvironmentVariable("INCLUDE") = C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include\
(本例在本人電腦上未能實現,路徑為網上別人的博客上的路徑)
System.Environment.GetEnvironmentVariable("TMP") = C:\Users\zhzhx\AppData\Local\Temp
System.Environment.GetEnvironmentVariable("TEMP") = C:\Users\zhzhx\AppData\Local\Temp
System.Environment.GetEnvironmentVariable("Path") = C:\Program Files\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;
四、 獲得Web應用程序的根目錄方法
1、HttpRuntime.AppDomainAppPath.ToString()
獲取承載在當前應用程序域中的應用程序目錄的物理驅動器路徑。用於App_Data中獲取。
2.Server.MapPath("") 或者 Server.MapPath("~/")
返回與Web服務器上的指定的虛擬路徑相對的物理文件路徑。
3.Request.ApplicationPath
獲取服務器上ASP.NET應用程序的虛擬應用程序根目錄。