C#: 获取执行程序所在路径和启动资源管理器

一、 获取执行程序所在路径

1.获取和设置当前目录的完全限定路径。

string str = System.Environment.CurrentDirectory;  //获取的是主程序目录,线程启动的子程序内获取的路径也是主程序的工作目录

Result: C:xxxxxx

2.获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。

string str = System.Windows.Forms.Application.StartupPath;  //exe 执行目录

Result: C:xxxxxx

3.获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名。

string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

Result: C:xxxxxxxxx.exe

4.获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。

string str = System.AppDomain.CurrentDomain.BaseDirectory;

Result: C:xxxxxx

5.获取应用程序的当前工作目录。

string str = System.IO.Directory.GetCurrentDirectory();

Result: C:xxxxxx

6.获取和设置包含该应用程序的目录的名称。

string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

Result: C:xxxxxx

7.获取当前进程的完整路径,包含文件名。

string str = this.GetType().Assembly.Location;

Result: C:xxxxxxxxx.exe

8.获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。string str = System.Windows.Forms.Application.ExecutablePath;

Result: C:xxxxxxxxx.exe

此外,更多见的通过XML文件配置具体的路径来达到合理的规划配置文件的具体存放位置,如WEB中的配置文件中的路径。

二、启动资源管理器:
 
 System.Diagnostics.Process.Start("explorer.exe", GlobalInfos.ClassroomRecordPath);
1.直接启动

ProcessStartInfo info = new ProcessStartInfo(); 
       info.FileName = Path.Combine(Environment.GetEnvironmentVariable("windir"), "explorer.exe");
       Process.Start(info).WaitForExit(); 

 2.类似1

ProcessStartInfo info = new ProcessStartInfo();
info.CreateNoWindow = true;
info.UseShellExecute = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
info.FileName = Path.Combine(Environment.GetEnvironmentVariable("windir"), "explorer.exe");
Process.Start(info); 


 3.shell 外部方法

private void button1_Click(object sender, EventArgs e)
     {
         ShellExecute(IntPtr.Zero, null, "explorer.exe", null, null, ShowCommands.SW_SHOW);
     }

     public enum ShowCommands : int

     {
         SW_HIDE = 0,
         SW_SHOWNORMAL = 1,
         SW_NORMAL = 1,
         SW_SHOWMINIMIZED = 2,
         SW_SHOWMAXIMIZED = 3,
         SW_MAXIMIZE = 3,
         SW_SHOWNOACTIVATE = 4,
         SW_SHOW = 5,
         SW_MINIMIZE = 6,
         SW_SHOWMINNOACTIVE = 7,
         SW_SHOWNA = 8,
         SW_RESTORE = 9,
         SW_SHOWDEFAULT = 10,
         SW_FORCEMINIMIZE = 11,
         SW_MAX = 11

     }

     [DllImport("shell32.dll")]
     static extern IntPtr ShellExecute(
         IntPtr hwnd,
         string lpOperation,
         string lpFile,
         string lpParameters,
         string lpDirectory,
         ShowCommands nShowCmd); 


 4.shell窗口常规

Process.Start(Path.Combine(Environment.GetEnvironmentVariable("windir"), "explorer.exe")); 
         ShellWindows  win= new SHDocVw.ShellWindows(); 

 5.cmd命令执行explorer.exe

System.Diagnostics.Process process = new System.Diagnostics.Process();
           System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
           startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
           startInfo.FileName = "cmd.exe"; 
           process.StartInfo = startInfo;
           process.StartInfo.RedirectStandardInput = true;
           process.StartInfo.RedirectStandardOutput = true;
           process.StartInfo.UseShellExecute = false;
           process.Start();
           process.StandardInput.WriteLine(Environment.GetEnvironmentVariable("windir")+"\explorer.exe");
           process.StandardInput.Flush();
           process.StandardInput.Close();
           process.WaitForExit(); 
View Code
原文地址:https://www.cnblogs.com/shenchao/p/5492198.html