C#环境信息获取
来源 : http://wanxiujin.blog.163.com/blog/static/300460432009322111659409/
环境路径
1 获取当前工作目录的完全限定路径 System.Environment.CurrentDirectory
2 从程序集加载指定的清单资源
Stream xmls = this.GetType().Assembly.GetManifestResourceStream("ATBS.DevelopmentPlatform.Templates.Templates." + TemplateName);
string content = string.Empty;
using (StreamReader writer = new StreamReader(xmls))
{
content = writer.ReadToEnd();
}
3 // 获取当前运行的路径
//appBasePath = AppDomain.CurrentDomain.BaseDirectory;
appBasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\";
4 配置文件的处理System.Configuration.ConfigurationManager.AppSettings
C#获取程序路径的方法中需要注意的地方
获取运行程序路径的方法主要有以下7种:
· System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
他获取的是Module的文件名,如果在VS2008的调试环境中,获取的是 [程序名].vshost.exe的完整文件名。
· System.Environment.CurrentDirectory
System.IO.Directory.GetCurrentDirectory()
这两个方法获得的路径是一样的,获得的是当前路径,这个路径不一定是程序所在的路径。任何会改变当前路径的方法都会改变它,例如:OpenFileDialog每换一次目录就会改变它。因此,用这2个方法获取程序路径并不可靠。
· System.AppDomain.CurrentDomain.BaseDirectory
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
这两个方法是可靠的获取程序路径的方法。返回的路径最末以"\"结尾。可以方便的在后面加入任何Path。当然就算没有也可以用Path.Combine来合并路径以获得想要的路径。
· System.Windows.Forms.Application.StartupPath
这个方法也是可靠的获取程序路径的方法。不过返回的路径最末并没有"\"结尾。另外因为是Forms命名空间的。因此如果使用WPF还是不用的好。
· System.Windows.Forms.Application.ExecutablePath
这个方法获取的是执行程序的完整文件名。是最可靠的方式,只需要去掉程序文件名就可以获得路径。
获取程序的路径:
using System.Reflection;
Assembly.GetEntryAssembly().Location;
看看这个行不行
【zswang】:
简单的方法是这样
Text = typeof(Class1).Module.FullyQualifiedName;
【xiaoyuzi】:
string strDllFile = System.Reflection.Assembly.GetExecutingAssembly().Location;
FileInfo fi = new FileInfo(strDllFile);
return fi.Directory.FullName;
Environment.CurrentDirectory 属性值始终是指当前应用程序文件所在的目录,直到被 FileNotFoundException 异常所惊醒。在 MSDN 中,CurrentDirectory 属性的描述为:获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
通过调试发现,FileOpenDialog 会改变该当前目录的值。当用户通过文件打开对话框选取文件后,当前目录的值将变成用户所选择文件所在的目录。因此如果依赖该属性来定位某个固定的文件的位置,那么是要被 FileNotFoundException 之类的异常打扰D。如果需要始终定位到当前应用程序所在的位置,可以用 System.Windows.Forms.Application.StartupPath 来获取,当前也可以用 System.Reflection.Assembly.GetEntryAssembly().Location 来获取当前入口/主线程的所在集合文件的路径(包含文件名),如果只需要目录部分的字符串则可使用 System.IO.Path.GetDirectoryName() 来截取。
*这里提醒各位注意:Environment.CurrentDirectory在默认的情况下是会指向工程的bin\debug下,如果你想指向它的跟目录下或其他目录,你就必须自己设置,设置方法如下:
选择"解决方案资源管理器"
选择项目名称下的"Properties",右键打开
点"调试"项目
在启动选项中的工作目录中设置你需要的目录!
设置完毕!
1 C#获取当前路径的方法集合
2
3 //获取当前进程的完整路径,包含文件名(进程名)。
4 string str = this.GetType().Assembly.Location;
5 result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
6
7 //获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。
8 string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
9 result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
10
11 //获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
12 string str = System.Environment.CurrentDirectory;
13 result: X:\xxx\xxx (.exe文件所在的目录)
14
15 //获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
16 string str = System.AppDomain.CurrentDomain.BaseDirectory;
17 result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
18
19 //获取和设置包含该应用程序的目录的名称。
20 string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
21 result: X:\xxx\xxx\ (.exe文件所在的目录+"\")
22
23 //获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
24 string str = System.Windows.Forms.Application.StartupPath;
25 result: X:\xxx\xxx (.exe文件所在的目录)
26
27 //获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
28 string str = System.Windows.Forms.Application.ExecutablePath;
29 result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
30
31 //获取应用程序的当前工作目录(不可靠)。
32 string str = System.IO.Directory.GetCurrentDirectory();
33 result: X:\xxx\xxx (.exe文件所在的目录)