C#如何保证获取当前应用程序的绝对路径是对的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何保证获取当前应用程序的绝对路径是对的?相关的知识,希望对你有一定的参考价值。

我使用系统文件管理器,右键把本程序的exe文件的快捷方式建在桌面上,然后双击快捷方式,可以正常打开。
当我把此快捷方式的属性“起始位置”项清空后,程序不能运行了!(我的程序需要同文件夹下的另一目录),而且我用MessageBox显示工作

路径 为桌面!?
我使用static public readonly string WorkDirectory = System.IO.Directory.GetCurrentDirectory()在主窗体初始化时候保存的,整个项目使用这一个工作目录。
我看别的程序的快捷方式清空那个属性运行也没事啊???
我知道使用Application.StartupPath 这个一定没问题。可是为什么我用原来的方法只要快捷方式的属性没有改变就没事?

使用 Application.StartupPath

至于
System.IO.Directory.GetCurrentDirectory不行,因为应用程序有个当前工作目录,这个工作目录是会变的,不总是程序的启动目录(当然默认启动是应用程序目录)。
比如说,你打开命令行(cmd),它就会显示一个路径,你会发现这个路径(通常是 C:\Documents and settings\用户名,在XP下)不是cmd.exe所在目录(cmd.exe 是在system32下的)。
而这个当前目录很容易改变,甚至当你使用了文件浏览对话框(比如打开文件、保存文件)时,这个当前目录都会改变到它最后选择的目录。

而快捷方式中的启动目录,就是设置当前应用程序的工作目录。默认情况下,新建的快捷方式的启动目录就是应用程序所在目录,所以你不修改的话是可以正常工作的,明白了?
参考技术A System.Diagnostics命名空间
string str1 =Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名。

System 命名空间
string str2=Environment.CurrentDirectory;//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。

System.IO命名空间
string str3=Directory.GetCurrentDirectory();//获取应用程序的当前工作目录。
string str4=AppDomain.CurrentDomain.BaseDirectory;//获取基目录,它由程序集冲突解决程序用来探测程序集。
string str5=Application.StartupPath;//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
string str6=Application.ExecutablePath;//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
string str7=AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//获取或设置包含该应用程序的目录的名称。

1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
获取模块的完整路径。
2. System.Environment.CurrentDirectory
获取和设置当前目录(该进程从中启动的目录)的完全限定目录。
3. System.IO.Directory.GetCurrentDirectory()
获取应用程序的当前工作目录。这个不一定是程序从中启动的目录啊,有可能程序放在C:"www里,这个函数有可能返回C:"Documents and Settings"ZYB",或者C:"Program Files"Adobe",有时不一定返回什么东东,我也搞不懂了。
4. System.AppDomain.CurrentDomain.BaseDirectory
获取程序的基目录。
5. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
获取和设置包括该应用程序的目录的名称。
6. System.Windows.Forms.Application.StartupPath
获取启动了应用程序的可执行文件的路径。效果和2、5一样。只是5返回的字符串后面多了一个"""而已
7. System.Windows.Forms.Application.ExecutablePath
获取启动了应用程序的可执行文件的路径及文件名,效果和1一样。

string path = new DirectoryInfo("../").FullName;//当前应用程序路径的上级目录

C# 获取当前,相对,绝对路径

一、C#获取当前路径的方法:

1. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName

-获取模块的完整路径。

2. System.Environment.CurrentDirectory

-获取和设置当前目录(该进程从中启动的目录)的完全限定目录。

3. System.IO.Directory.GetCurrentDirectory()

-获取应用程序的当前工作目录。这个不一定是程序从中启动的目录啊,有可能程序放在C:\www里,这个函数有可能返回C:\Documents and Settings\ZYB\,或者C:\Program Files\Adobe\。

4. System.AppDomain.CurrentDomain.BaseDirectory

-获取程序的基目录。

5. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase

-获取和设置包括该应用程序的目录的名称。

6. System.Windows.Forms.Application.StartupPath

-获取启动了应用程序的可执行文件的路径。

7. System.Windows.Forms.Application.ExecutablePath

-获取启动了应用程序的可执行文件的路径及文件名。

以上是关于C#如何保证获取当前应用程序的绝对路径是对的?的主要内容,如果未能解决你的问题,请参考以下文章

C# 程序开机自动启动,但是获取当前路径名称是不正确,请教怎么解决?

C#获取项目的路径

C# 获取当前,相对,绝对路径

我想问下简单的HTML问题,我路径设置是对的啊,为啥页面显示不出来图片

C# ,asp.net 获取当前,相对,绝对路径

C#获取文件物理路径(绝对路径)