控制台程序:
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.exe
p3=D:\csharp\ConsoleApp5\bin\Debug
p4=D:\csharp\ConsoleApp5\bin\Debug
p5=D:\csharp\ConsoleApp5\bin\Debug\
窗体控制程序: p6、p7注释去掉: 结果为:
p1=D:\csharp\WinMyTest1\bin\Debug\
p2=D:\csharp\WinMyTest1\bin\Debug\WinMyTest1.exe
p3=D:\csharp\WinMyTest1\bin\Debug
p4=D:\csharp\WinMyTest1\bin\Debug
p5=D:\csharp\WinMyTest1\bin\Debug\
p6=D:\csharp\WinMyTest1\bin\Debug
p7=D:\csharp\WinMyTest1\bin\Debug\WinMyTest1.exe
额外说明: 安装为服务时: System.Environment.CurrentDirectory,这个取的windows/system32的路径。 可换为这个: AppDomain.CurrentDomain.BaseDirectory