//1.获取模块的完整路径。
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
//2.获取和设置当前目录(该进程从中启动的目录)的完全限定目录
System.Environment.CurrentDirectory;
//3.获取应用程序的当前工作目录
System.IO.Directory.GetCurrentDirectory();
//4.获取程序的基目录
System.AppDomain.CurrentDomain.BaseDirectory;
//5.获取和设置包括该应用程序的目录的名称
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
//6.获取启动了应用程序的可执行文件的路径
System.Windows.Forms.Application.StartupPath;
//7.获取启动了应用程序的可执行文件的路径及文件名
System.Windows.Forms.Application.ExecutablePath;
以下是当我使用task scheduler的时候的路径
Process.GetCurrentProcess().MainModule.FileName:C:\Program Files (x86)\Client\client.exe
Environment.CurrentDirectory:C:\Windows\system32
Directory.GetCurrentDirectory:C:\Windows\system32
base directory:C:\Program Files (x86)\Client
AppDomain.CurrentDomain.SetupInformation.ApplicationBase:C:\Program Files (x86)\Client
System.Windows.Forms.Application.StartupPath:C:\Program Files (x86)\Client
System.Windows.Forms.Application.ExecutablePath:C:\Program Files (x86)\Client\client.exe
解决办法:
System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);