zoukankan      html  css  js  c++  java
  • 获取运行程序路径

    获取运行程序路径的方法主要有以下7种:

    • System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
      他获取的是Module的文件名,如果在VS2008的调试环境中,获取的是 [程序名].vshost.exe的完整文件名。
    • System.Environment.CurrentDirectory
      System.IO.Directory.GetCurrentDirectory()
      这两个方法获得的路径是一样的,获得的是当前路径,这个路径不一定是程序所在的路径。任何会改变当前路径的方法都会改变它,例如:OpenFileDialog每换一次目录就会改变它。因此,用这2个方法获取程序路径并不可靠。
    • System.AppDomain.CurrentDomain.BaseDirectory
      System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
      这两个方法是可靠的获取程序路径的方法。返回的路径最末以"\"结尾。可以方便的在后面加入任何Path。当然就算没有也可以用Path.Combine来合并路径以获得想要的路径。
    • System.Windows.Forms.Application.StartupPath
      这个方法也是可靠的获取程序路径的方法。不过返回的路径最末并没有"\"结尾。另外因为是Forms命名空间的。因此如果使用WPF还是不用的好。
    • System.Windows.Forms.Application.ExecutablePath
      这个方法获取的是执行程序的完整文件名。是最可靠的方式,只需要去掉程序文件名就可以获得路径。

    版本2:

    //获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。
    string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
    result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)
    //获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
    string str = System.Environment.CurrentDirectory;
    result: X:\xxx\xxx (.exe文件所在的目录)

    //获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
    string str = System.AppDomain.CurrentDomain.BaseDirectory;
    result: X:\xxx\xxx\ (.exe文件所在的目录+"\")

    //获取和设置包含该应用程序的目录的名称。
    string str = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
    result: X:\xxx\xxx\ (.exe文件所在的目录+"\")

    //获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
    string str = System.Windows.Forms.Application.StartupPath;
    result: X:\xxx\xxx (.exe文件所在的目录)

    //获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。
    string str = System.Windows.Forms.Application.ExecutablePath;
    result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)

    //获取应用程序的当前工作目录(不可靠)。
    string str = System.IO.Directory.GetCurrentDirectory();
    result: X:\xxx\xxx (.exe文件所在的目录)

    参考借鉴:https://i.cnblogs.com/EditPosts.aspx?opt=1

  • 相关阅读:
    Maximum Depth of Binary Tree
    Single Number
    Merge Two Sorted Lists
    Remove Nth Node From End of List
    Remove Element
    Remove Duplicates from Sorted List
    Add Two Numbers
    编译视频直播点播平台EasyDSS数据排序使用Go 语言 slice 类型排序的实现介绍
    RTMP协议视频直播点播平台EasyDSS在Linux系统中以服务启动报错can’t evaluate field RootPath in type*struct排查
    【解决方案】5G时代RTMP推流服务器/互联网直播点播平台EasyDSS实现360°全景摄像机VR直播
  • 原文地址:https://www.cnblogs.com/xifengyeluo/p/6944673.html
Copyright © 2011-2022 走看看