C#获取程序路径的方法中需要注意的地方

C#获取程序路径的方法中需要注意的地方(版本1)

获取运行程序路径的方法主要有以下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
    这个方法获取的是执行程序的完整文件名。是最可靠的方式,只需要去掉程序文件名就可以获得路径。

版本2:

//获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。
string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
string str = System.Environment.CurrentDirectory;
result: X:\xxx\xxx (.exe文件所在的目录)

//获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
string str = System.AppDomain.CurrentDomain.BaseDirectory;
result: X:\xxx\xxx\ (.exe文件所在的目录+"\")

//获取和设置包含该应用程序的目录的名称。
string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
result: X:\xxx\xxx\ (.exe文件所在的目录+"\")

//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str = System.Windows.Forms.Application.StartupPath;
result: X:\xxx\xxx (.exe文件所在的目录)

//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str = System.Windows.Forms.Application.ExecutablePath;
result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)

//获取应用程序的当前工作目录(不可靠)。
string str = System.IO.Directory.GetCurrentDirectory();
result: X:\xxx\xxx (.exe文件所在的目录)

时间: 2024-07-28 17:38:08

C#获取程序路径的方法中需要注意的地方的相关文章

jsp获取url路径的方法分析_JSP编程

本文实例讲述了jsp获取url路径的方法.分享给大家供大家参考,具体如下: 如果你请求的URL是  http://localhost:8080/demo/Index.jsp request.getScheme() //输出:http request.getServerName() //输出: localhost request.getServerPort() //输出: 8080 request.getContextPath() //输出: /demo request.getRequestPat

WPF获取程序路径的一些方法

原文 http://hi.baidu.com/zido2/item/204743c337dd2e0d0bd93a74 1.   System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName     获取模块的完整路径.2.   System.Environment.CurrentDirectory     获取和设置当前目录(该进程从中启动的目录)的完全限定目录.3.   System.IO.Directory.GetCur

JAVA获取CLASSPATH路径的方法详解_java

ClassLoader 提供了两个方法用于从装载的类路径中取得资源: public URL getResource (String name); public InputStream getResourceAsStream (String name);        这里name是资源的类路径,它是相对与"/"根路径下的位置.getResource得到的是一个URL对象来定位资源,而getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据.     

JSP中获取各种路径的方法

test1.jsp<a href ="test.jsp?p=fuck">跳转到test2</a> test2.jsp <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/

java 获取项目文件路径实现方法_java

this.getClass().getResource("/").getPath().substring(1)获得路径为E:/myeclipse/test/WebRoot/WEB-INF/classes/,即主目录. this.getClass().getResource("").getPath().substring(1)获得路径为E:/myeclipse/test/WebRoot/WEB-INF/classes/net/hncu/db/,即本文件的相对路径. t

IOS中获取各种文件的目录路径的方法

其实每个APP的程序都是单独的一个文件夹,每个APP之间相互之间独立,所以它们的文件夹也是独立的,这个文件夹就是沙盒(Sandbox).沙盒好处,安全; 坏处,程序之间彼此共享数据较为困难. 1)如何找到应用程序的沙盒源文件? 一般沙盒源文件都存放在~/Library/Application Support/iPhone Simulator/版本号/Applications/的文件夹中,但是这个Library(中文名叫资源库)文件夹是隐藏的.所以需要方法才能点击进去:在Finder中按CMD+S

IOS获取各种文件目录路径的方法_IOS

iphone沙箱模型有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory()), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在tmp文件夹里 1.Documents 目录:您应该将所有de应用程序数据文件写入到这个目录下.这个目录用于存储用户数据或其它应该定期备份的信息. 2.AppName.app 目录:这是应用程序的程序包目录,包

CMD魔法堂:获取进程路径和PID值的方法集

一.前言      在开发发布更更新工具--更新Weblogic应用模块时,了解到更新Weblogic应用需要先关闭Weblogic应用窗口然后是清缓存.更新应用文 件,最后再重启Weblogic应用窗口.所以第一步需要获取Weblogic应用窗口的PID然后将其kill掉.下面将记录曾经的各种尝试,以便日后 查阅.   二.wmic命令 windows自带功能,功能十分强大 示例1--获取所有进程信息: wmic process 示例2--指定进程执行路径获取PID信息: vmic proce

java获取各种路径的基本方法_java

本文实例为大家分享了java获取不同路径的方法,供大家参考,具体内容如下 package com.ygh.blog.realpath; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Properties; /** * 获取java下面的路径的演示 */ import org.junit.Test; public c