1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
-获取模块的完整路径。
2.System.Environment.CurrentDirectory
-获取和设置当前目录(该进程从中启动的目录)的完全限定目录。
3.System.IO.Directory.GetCurrentDirectory()
-获取应用程序的当前工作目录。
4.System.AppDomain.CurrentDomain.BaseDirectory
-获取程序的基目录。
5.System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
-获取和设置包括该应用程序的目录的名称。
6. System.Windows.Forms.Application.StartupPath
-获取启动了应用程序的可执行文件的路径。
7.System.Windows.Forms.Application.ExecutablePath
-获取启动了应用程序的可执行文件的路径及文件名,效果和1一样。
此时着重说一下2和6,即System.Environment.CurrentDirectory和System.Windows.Forms.Application.StartupPath。此时关系到程序开机自启加载文件的问题。System.Environment.CurrentDirectory的含义是获取或设置当前工作路径,而Application.StartupPath是获取程序启动路径。在开机自启中,System.Environment.CurrentDirectory获取到的路径是C:\window\system32,也就是说这个程序的工作路径是C:\window\system32,即开机自启的时候程序是在这个路径下启动的。而Application.StartupPath获取到的就是程序所在的路径。有网友是这样分析的:
先说System.Environment.CurrentDirectory:比如说你程序放在桌面上启动,但是中间你用了一个OpenFileDialog打开了E盘名为abc的文件夹下的某一个文件,那么CurrentDirectory就变成E:\abc了,所以如果你想再获取程序启动文件夹的某一个文件就没用了;
但是Application.StartupPath就不会这样了,无论你中间打开了哪个盘的文件,启动路径都是在桌面那里,一直不会变。
也就是说System.Environment.CurrentDirectory这个路径是会改变(“设置”)的(印证了System.Environment.CurrentDirectory的含义是获取或设置当前工作路径)。
暂时先总结这么多,如果后续发现其他使用再添加。