控制台程序:

static void Main(string[] args)        {            // 获取程序的基目录。            string p1 = System.AppDomain.CurrentDomain.BaseDirectory;            Console.WriteLine("p1=" + p1);            // 获取模块的残缺门路,蕴含文件名            string p2 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;            Console.WriteLine("p2=" + p2);            // 获取和设置当前目录(该过程从中启动的目录)的齐全限定目录。            string p3 = System.Environment.CurrentDirectory;            Console.WriteLine("p3=" + p3);            // 获取应用程序的当前工作目录,留神工作目录是能够扭转的,而不限定在程序所在目录。            string p4 = System.IO.Directory.GetCurrentDirectory();            Console.WriteLine("p4=" + p4);            // 获取和设置包含该应用程序的目录的名称。            string p5 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;            Console.WriteLine("p5=" + p5);            // 获取启动了应用程序的可执行文件的门路。            /*string p6 = System.Windows.Forms.Application.StartupPath;            Console.WriteLine("p6=" + p6);            // 获取启动了应用程序的可执行文件的门路及文件名            string p7 = System.Windows.Forms.Application.ExecutablePath;            Console.WriteLine("p7=" + p7);*/            Console.ReadLine();        }

后果为:

p1=D:\csharp\ConsoleApp5\bin\Debug\p2=D:\csharp\ConsoleApp5\bin\Debug\ConsoleApp5.exep3=D:\csharp\ConsoleApp5\bin\Debugp4=D:\csharp\ConsoleApp5\bin\Debugp5=D:\csharp\ConsoleApp5\bin\Debug\

窗体控制程序:
p6、p7正文去掉:
后果为:

p1=D:\csharp\WinMyTest1\bin\Debug\p2=D:\csharp\WinMyTest1\bin\Debug\WinMyTest1.exep3=D:\csharp\WinMyTest1\bin\Debugp4=D:\csharp\WinMyTest1\bin\Debugp5=D:\csharp\WinMyTest1\bin\Debug\p6=D:\csharp\WinMyTest1\bin\Debugp7=D:\csharp\WinMyTest1\bin\Debug\WinMyTest1.exe

额定阐明:
装置为服务时: System.Environment.CurrentDirectory,这个取的windows/system32的门路。
可换为这个: AppDomain.CurrentDomain.BaseDirectory