在C#中,正常情况下Environment.CurrentDirectory和Application.StartupPath获得得值是相等的,就是当前应用程序运行的目录,一般来说是没有问题的,但是在之前做软件的时候用到了软件升级的功能,比如A是主程序,B是升级程序,那么启动A的时候检测是否需要更新,如果需要更新的话那么就通过A来启动B,然后在B中对A程序进行升级处理。此时在B程序中难免要去寻找A程序的位置,对其进行备份处理,在A程序和B程序的相对目录中如果用到以上两者的话就有大不同了。来看一个简单的例子,我们知道启动一个EXE文件我们可用

System.Diagnostics.Process.Start(@“D:\B.exe”);

这个来启动,好 先来看个截图 

C#取当前目录

大家看到了吧,这个程序是通过两个方式来获取当前程序目录的,但是我们发现他们的地址不一样,我们的操作过程是

启动端

通过上图找到第一张图中的程序,然后通过命令来启动它,此时在“当前目录”程序中正常通过双击启动的 也就是上面那个的两个地址是一致的,但是下面这个是通过“启动”端来启动的,发生了变化,Environment.CurrentDirectory变成了“启动”端的路径,那么如果我们在当前目录中利用Environment.CurrentDirectory来进行相关的操作那是会造成些不必要的麻烦的。

 综上在这种被动启动的情况下建议大家用Application.StartupPath来获取当前程序的目录

源程序下载L.rar