C#环境信息获取

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文件名)

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文件所在的目录)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值