zoukankan      html  css  js  c++  java
  • c#获取当前运行程序所在的目录

    C#获取项目程序及运行路径的方

    1.asp.net webform用“Request.PhysicalApplicationPath获取站点所在虚拟目录的物理路径,最后包含“”;
     
    2.c# winform用
    A:“Application.StartupPath”:获取当前应用程序所在目录的路径,最后不包含“”;
    B:“Application.ExecutablePath ”:获取当前应用程序文件的路径,包含文件的名称;
    C:“AppDomain.CurrentDomain.BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“”;
    D:“System.Threading.Thread.GetDomain().BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“”;
    E:“Environment.CurrentDirectory”:获取当前应用程序的路径,最后不包含“”;
    F:“System.IO.Directory.GetCurrentDirectory”:获取当前应用程序的路径,最后不包含“”;
     
    3.c# windows service服务中用“AppDomain.CurrentDomain.BaseDirectory”或“System.Threading.Thread.GetDomain().BaseDirectory”;
    用“Environment.CurrentDirectory”和“System.IO.Directory.GetCurrentDirectory”将得到“ system32”目录的路径;
    如果要使用“Application.StartupPath”或“Application.ExecutablePath ”,需要手动添加对“System.Windows.Forms.dll ”的引用,并在程序开头用“using   System.Windows.Forms”声明该引用;
     
    4.在卸载程序获取系统安装的目录:
             System.Reflection.Assembly curPath = System.Reflection.Assembly.GetExecutingAssembly();
             string path=curPath.Location;//得到安装程序类SetupLibrary文件的路径,获取这个文件路径所在的目录即得到安装程序的目录;
     
     
     
     
    一、获取当前文件的路径
    1.   System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
         获取模块的完整路径,包括文件名。
    2.   System.Environment.CurrentDirectory
         获取和设置当前目录(该进程从中启动的目录)的完全限定目录。
    3.   System.IO.Directory.GetCurrentDirectory()
         获取应用程序的当前工作目录。这个不一定是程序从中启动的目录啊,有可能程序放在C:www里,这个函数有可能返回C:Documents and SettingsYB\,或者C:Program FilesAdobe\,有时不一定返回什么东东,这是任何应用程序最后一次操作过的目录,比如你用Word打开了E:docmy.doc这个文件,此时执行这个方法就返回了E:doc了。
    4. System.AppDomain.CurrentDomain.BaseDirectory
         获取程序的基目录。
    5. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
         获取和设置包括该应用程序的目录的名称。
    6. System.Windows.Forms.Application.StartupPath
         获取启动了应用程序的可执行文件的路径。效果和2、5一样。只是5返回的字符串后面多了一个""而已
    7. System.Windows.Forms.Application.ExecutablePath
         获取启动了应用程序的可执行文件的路径及文件名,效果和1一样。
    二、操作环境变量
    利用System.Environment.GetEnvironmentVariable()方法可以很方便地取得系统环境变量,如:
    System.Environment.GetEnvironmentVariable("windir")就可以取得windows系统目录的路径。
    以下是一些常用的环境变量取值:
    System.Environment.GetEnvironmentVariable("windir");
    System.Environment.GetEnvironmentVariable("INCLUDE");
    System.Environment.GetEnvironmentVariable("TMP");
    System.Environment.GetEnvironmentVariable("TEMP");
    System.Environment.GetEnvironmentVariable("Path");
     System.Environment.SystemDirectory ;C:/windows/system32目录
    最后贴出我进行上面操作获得的变量值,事先说明,本人是编写了一个WinForm程序,项目文件存放于D:Visual Studio ProjectsMyApplicationLifeAssistant,编译后的文件位于D:Visual Studio ProjectsMyApplicationLifeAssistantinDebug,最后的结果如下:
    1、System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName=D:Visual Studio ProjectsMyApplicationLifeAssistantinDebugLifeAssistant.exe
    2、System.Environment.CurrentDirectory=D:Visual Studio ProjectsMyApplicationLifeAssistantinDebug
    3、System.IO.Directory.GetCurrentDirectory()=D:Visual Studio ProjectsMyApplicationLifeAssistantinDebug
    1 asp.net webform用“
    Request.PhysicalApplicationPath获取站点所在虚拟目录的物理路径,最后包含“”;
    2.c# winform用
    A:“
    Application.StartupPath”:获取当前应用程序所在目录的路径,最后不包含“”;
    B:“
    Application.ExecutablePath ”:获取当前应用程序文件的路径,包含文件的名称;
    C:“
    AppDomain.CurrentDomain.BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“”;
    D:“
    System.Threading.Thread.GetDomain().BaseDirectory”:获取当前应用程序所在目录的路径,最后包含“”;
    E:“
    Environment.CurrentDirectory”:获取当前应用程序的路径,最后不包含“”;
    F:“
    System.IO.Directory.GetCurrentDirectory”:获取当前应用程序的路径,最后不包含“”;
    3.c# windows service用“
    AppDomain.CurrentDomain.BaseDirectory”或“
    System.Threading.Thread.GetDomain().BaseDirectory”;
    用“
    Environment.CurrentDirectory”和“
    System.IO.Directory.GetCurrentDirectory”将得到“ system32”目录的路径;
    如果要使用“
    Application.StartupPath”或“
    Application.ExecutablePath ”,需要手动添加对“System.Windows.Forms.dll ”的引用,并在程序开头用“using System.Windows.Forms”声明该引用;
    4.在卸载程序获取系统安装的目录:
    System.Reflection.Assembly curPath = System.Reflection.Assembly.GetExecutingAssembly();
             string path=curPath.Location;//得到安装程序类SetupLibrary文件的路径,获取这个文件路径所在的目录即得到安装程序的目录;

    4、System.AppDomain.CurrentDomain.BaseDirectory=D:Visual Studio ProjectsMyApplicationLifeAssistantinDebug
    5、System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase=D:Visual Studio ProjectsMyApplicationLifeAssistantinDebug
    6、System.Windows.Forms.Application.StartupPath=D:Visual Studio ProjectsMyApplicationLifeAssistantinDebug
    7、System.Windows.Forms.Application.ExecutablePath=D:Visual Studio ProjectsMyApplicationLifeAssistantinDebugLifeAssistant.exe
    System.Environment.GetEnvironmentVariable("windir")=C:WINDOWS
    System.Environment.GetEnvironmentVariable("INCLUDE")=C:Program FilesMicrosoft Visual Studio .NET 2003SDKv1.1include
    System.Environment.GetEnvironmentVariable("TMP")=C:DOCUME~1zhoufoxcnLOCALS~1Temp
    System.Environment.GetEnvironmentVariable("TEMP")=C:DOCUME~1zhoufoxcnLOCALS~1Temp
    System.Environment.GetEnvironmentVariable("Path")=C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:jdk1.5.0in;C:MySQLServer5.0in;C:Program FilesSymantecpcAnywhere;C:Program FilesMicrosoft SQL Server80ToolsBINN




    C# 相对路径 系统路径
    2007-12-22 09:53
    //获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。  
    string   str5=Application.StartupPath;
    //可获得当前执行的exe的文件名。      
    string   str1   =Process.GetCurrentProcess().MainModule.FileName;
    //获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。备注   按照定义,如果该进程在本地或网络驱动器的根目录中启动,则此属性的值为驱动器名称后跟一个尾部反斜杠(如“C:”)。如果该进程在子目录中启动,则此属性的值为不带尾部反斜杠的驱动器和子目录路径(如“C:mySubDirectory”)。  
    string   str2=Environment.CurrentDirectory;
    //获取应用程序的当前工作目录。  
    string   str3=Directory.GetCurrentDirectory();
    //获取基目录,它由程序集冲突解决程序用来探测程序集。  
    string   str4=AppDomain.CurrentDomain.BaseDirectory;
    //获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。  
    string   str5=Application.StartupPath;
    //获取启动了应用程序的可执行文件的路径,包括可执行文件的名称。  
    string   str6=Application.ExecutablePath;
    //获取或设置包含该应用程序的目录的名称。
    string   str7=AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
    //例子
    Application.StartupPath;
    //可以得到F:learningc#TrainingwinwininDebug
    //注意自己补两个
    Application.StartupPath+"\3.jpg";

    在c#中,相对路径是用"."和".."表示,
    "."代表当前目录,
    ".."代表上一级录。
    例如 假设我用vs2005在D:My DocumentsVisual Studio 2005Projects目录里创建了一个名叫controls的项目,即在Projects文件夹里有一个controls文件夹,controls文件夹里有三个文件:controls.sln   controls文件夹   GulfOfStLawrence文件夹。
    D:My DocumentsVisual Studio 2005ProjectsControlsControlsinDebug是这个简单项目能够运行的可执行文件Controls.exe

    现在我想要 D:My DocumentsVisual Studio 2005ProjectsControlsGulfOfStLawrence文件夹下的Gulf_of_St._Lawrence.mxd(arcgis desktop)工程文件路径。
    那么相对路径应该就是"......GulfOfStLawrenceGulf_of_St._Lawrence.mxd"
    即string filename = @"......GulfOfStLawrenceGulf_of_St._Lawrence.mxd";

    心得:1.用相对路径能增加项目的可移植性。使一个工程在移植过程中变得简单,节省了大量布置与工程相关的文件的时间。(如果设置的是绝对路径)。
         2.使用相对路径也使程序代码变得简单
       3. 但有一点必须注意:(只能在同一个驱动器里(如:都在D:里)使用相对路径)。

     
     
     
    参考:
    http://www.cnblogs.com/dylanblog/p/4546458.html
    http://www.cnblogs.com/amylis_chen/p/4020082.html
  • 相关阅读:
    Codeforces 1291 Round #616 (Div. 2) B
    总结
    刷新DNS解析缓存+追踪+域名解析命令
    数学--数论--Hdu 5793 A Boring Question (打表+逆元)
    Lucene.net(4.8.0) 学习问题记录六:Lucene 的索引系统和搜索过程分析
    LeetCode 117 Populating Next Right Pointers in Each Node II
    LeetCode 116 Populating Next Right Pointers in Each Node
    test test
    LeetCode 115 Distinct Subsequences
    LeetCode 114. Flatten Binary Tree to Linked List
  • 原文地址:https://www.cnblogs.com/marblemm/p/7084441.html
Copyright © 2011-2022 走看看