C#获取程序运行路径的方法总结
4星 · 超过85%的资源 需积分: 15 65 浏览量
更新于2024-09-16
收藏 1KB TXT 举报
"这篇文章主要介绍了在C#编程中获取运行程序路径的各种方法,包括获取当前进程的完整路径、启动应用程序的可执行文件路径、当前工作目录、应用域的基础目录等。"
在C#编程中,有时我们需要获取与运行程序相关的各种路径信息,这可能涉及到程序的执行文件位置、当前工作目录、应用域的基础目录等多个方面。以下是一些常用的C#代码片段,用于获取这些路径:
1. `this.GetType().Assembly.Location`: 这行代码返回的是当前类型(`this.GetType()`)所在的程序集的完整路径。它适用于获取包含当前类的DLL或EXE文件的路径。
2. `System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName`: 使用`GetCurrentProcess()`方法获取当前进程,然后通过`MainModule.FileName`属性获取该进程的主模块(通常是可执行文件)的路径,但不包括文件名。
3. `System.Environment.CurrentDirectory`: 此属性返回当前应用程序的工作目录,也就是程序运行时的工作目录,可以用来读写文件等操作。
4. `System.AppDomain.CurrentDomain.BaseDirectory`: 这个返回的是当前应用域的基础目录,通常用于定位到应用程序的根目录。
5. `System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase`: 这个属性返回应用程序配置信息中的应用基目录,与`BaseDirectory`类似,但可能包含更多信息,如配置文件等。
6. `System.Windows.Forms.Application.StartupPath`: 如果在Windows Forms环境中,这个方法将返回启动应用程序时的目录,即启动执行文件所在的目录。
7. `System.Windows.Forms.Application.ExecutablePath`: 获取应用程序的可执行文件的完整路径,包括文件名。
8. `System.IO.Directory.GetCurrentDirectory()`: 类似于`Environment.CurrentDirectory`,获取当前工作目录,但不局限于Windows Forms环境。
9. `System.Threading.Thread.GetDomain().BaseDirectory`: 返回当前线程的应用域基础目录,这个路径可能因多线程环境而有所不同。
10. `System.Reflection.Assembly.GetExecutingAssembly().Location`: 这个方法返回执行当前代码的程序集的完整路径,与`this.GetType().Assembly.Location`类似,但不保证始终相同。
11. `System.IO.Path.GetFullPath(".\\")`: 获取当前目录的完整路径,以绝对路径形式表示。
这些方法在处理文件操作、资源定位或配置文件读取等场景中非常有用。理解并掌握这些路径获取方式,能够帮助开发者更准确地定位和访问程序所需资源。在实际开发过程中,根据需求选择合适的方法是至关重要的。
258 浏览量
336 浏览量
2021-10-11 上传
223 浏览量
121 浏览量
320 浏览量
海-洋-水
- 粉丝: 1
- 资源: 7
最新资源
- 易语言学习-互联网服务支持库(ISAPI) - 公开测试版3(2012-5-29).zip
- mingw-w64+gcc-10.2.0
- 200个常用图标动画 .gif .ae素材下载
- Solving-programming-problems-in-R-on-your-own:曾经因为搜寻问题似乎无法让您找到解决方案而感到沮丧吗? 该研讨会将帮助您解决如何自行解决R中的编码问题!
- 超声波探伤方法汇总.rar
- 今日公交:今日扩展和苹果表展示公交到站
- 总标量
- 易语言学习-内存DLL操作支持库)含例子源码和演示录像.zip
- caesar-cipher_Cplusplus:在密码学中,凯撒(Caesar)代码或幻灯片代码,凯撒(Caesar)代码或凯撒Shift(Caesar Shift)是最简单且最知名的加密技术之一。 该代码包括替换代码,其中,浅色文本中的每个字母被替换为字母表中具有特定位置差异的另一个字母
- ViperC:适用于Objective-C和Swift的VIPER体系结构的Xcode模板
- NeverNote:built构建了一个简单的便笺和任务应用程序,以演示现代Android开发工具的使用-(Kotlin,协程,流程,体系结构组件,MVVM,房间,材料设计组件,通知等)
- RomeroLight
- unCompress.zip
- ETL_with_Pyspark_-_SparkSQL:一个示例项目,旨在使用Apache Spark中的Pyspark和Spark SQL API演示ETL过程
- 智能家居外文翻译
- 易语言学习-大鸟的目录树支持库--静态版(二次修正).zip