首页 > 编程语言 >C#中获取程序路径的几种方法及启动方式

C#中获取程序路径的几种方法及启动方式

时间:2024-08-30 15:28:07浏览次数:10  
标签:exe 启动 C# 路径 程序 几种 获取 test


目录

在开发的程序中使用自定义的配置文件属于基本的操作了,但最近发现一个问题:如果程序是由用户通过exe文件直接打开的,获取同目录下配置文件不会有问题;

但如果程序是由第三方应用启动的,通过不同方式获取的“当前目录”会有不同。

整理的几种获取当前目录的方式

及官方文档中的注释:

string str1=Process.GetCurrentProcess().MainModule.FileName;//获取模块的完整路径。
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;//获取或设置包含该应用程序的目录的名称。
string str8=this.GetType().Assembly.Location;//获取包含清单的已加载文件的路径或UNC位置。

分别通过手动启动和第三方调用的方法启动应用程序(exe文件路径:D:\test\程序启动路径.exe),其值分别为:

手动启动

Process.GetCurrentProcess().MainModule.FileName D:\test\程序启动路径.exe
Environment.CurrentDirectory D:\test
Directory.GetCurrentDirectory() D:\test
AppDomain.CurrentDomain.BaseDirectory D:\test\
Application.StartupPath D:\test
Application.ExecutablePath D:\test\程序启动路径.exe
AppDomain.CurrentDomain.SetupInformation.ApplicationBase D:\test\
this.GetType().Assembly.Location D:\test\程序启动路径.exe

通过Win+R打开运行,输入程序路径,或通过bat批处理命令运行,效果与直接打开一致。

C#使用System.Diagnostics.Process.Start()方法启动

(调用方路径:E:\test)

Process.GetCurrentProcess().MainModule.FileName D:\test\程序启动路径.exe
Environment.CurrentDirectory E:\test
Directory.GetCurrentDirectory() E:\test
AppDomain.CurrentDomain.BaseDirectory D:\test\
Application.StartupPath D:\test
Application.ExecutablePath D:\test\程序启动路径.exe
AppDomain.CurrentDomain.SetupInformation.ApplicationBase D:\test\
this.GetType().Assembly.Location D:\test\程序启动路径.exe

通过cmd命令行启动

(cmd命令中直接输入 D:\test\程序启动路径.exe)

Process.GetCurrentProcess().MainModule.FileName D:\test\程序启动路径.exe
Environment.CurrentDirectory C:\Users\用户名
Directory.GetCurrentDirectory() C:\Users\用户名
AppDomain.CurrentDomain.BaseDirectory D:\test\
Application.StartupPath D:\test
Application.ExecutablePath D:\test\程序启动路径.exe
AppDomain.CurrentDomain.SetupInformation.ApplicationBase D:\test\
this.GetType().Assembly.Location D:\test\程序启动路径.exe

通过LabVIEW中“执行系统命令”(System Exec.vi)启动

Process.GetCurrentProcess().MainModule.FileName D:\test\程序启动路径.exe
Environment.CurrentDirectory C:\WINDOWS\system32
Directory.GetCurrentDirectory() C:\WINDOWS\system32
AppDomain.CurrentDomain.BaseDirectory D:\test\
Application.StartupPath D:\test
Application.ExecutablePath D:\test\程序启动路径.exe
AppDomain.CurrentDomain.SetupInformation.ApplicationBase D:\test\
this.GetType().Assembly.Location D:\test\程序启动路径.exe

此方法在不同电脑中表现不一致,没有对比是操作系统原因还是LabVIEW原因。

在同事电脑上,Environment.CurrentDirectory和Directory.GetCurrentDirectory()方式获取的路径为 C:\Users\用户名\Desktop

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

 

 

出处:https://www.jb51.net/program/29207451c.htm

 

标签:exe,启动,C#,路径,程序,几种,获取,test
From: https://www.cnblogs.com/mq0036/p/18388833

相关文章

  • Apache顶级项目ShardingSphere — SQL Parser的设计与实现
    导语:SQL作为现代计算机行业的数据处理事实标准,是目前最重要的数据处理接口之一,从传统的DBMS(如MySQL、Oracle),到主流的计算框架(如spark,flink)都提供了SQL的解析引擎,因此想对sql进行精细化的操作,一定离不开SQLParser。ApacheShardingSphere是一套开源的分布式数据库中间件解决方案......
  • PCBA加工时电路板变形翘曲的原因
    在PCBA加工过程中,电路板变形翘曲是一个常见且复杂的问题,它可能由多种因素共同作用导致,以下是对电路板变形翘曲原因的分析:一、原材料选用不当 Tg值越低的材料,在高温环境下越容易变软,导致电路板在回流焊等高温工艺中变形。随着电子产品向轻薄化方向发展,电路板厚度越来越薄,降低了其抵......
  • VS Code 代码片段指南: 从基础到高级技巧
    前言“系列首发于公众号『非同质前端札记』,若不想错过更多精彩内容,请“星标”一下,敬请关注公众号最新消息。今天咱们来聊聊VSCode里的自定义代码片段。这玩意儿简直是提升编码效率的神器,用好了能让你敲代码更方便!不管你是刚入行的菜鸟还是身经百战的老兵,这篇攻略都......
  • Oracle物化视图的干货知识点
    物化视图1.简介  Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,即快照。视图中数据不存在;物化视图数据实际存在2.创建物化视图选型2.1刷新的2种模式:  ONDEMAND仅在该物......
  • 出海浪头之上,共探CDN进化新支力
    CDN技术自问世以来已超过20个年头,在云计算与AI深度融合的大趋势下,各行业实际业务需求已发生巨变,下一代CDN技术又将走向何方?8月16日,“抓住泛娱热趋,打通增长脉络——大浪淘沙之后的CDN”技术沙龙活动在深圳圆满结束。阿里云专家与各企业代表,深入探索CDN技术变革之路,携手开启一场关于C......
  • 【Mysql】mysql count主键字段很慢超时 执行计划Select tables optimized away ,最终调
     背景: mysql表 主键字段count,速度很慢,耗时将近30s   从执行计划可以看出:explainSELECTCOUNT(rule_id)ASdataCountFROM`sku_safe_stock_rule`;   原理分析:SelecttablesoptimizedawaySELECT操作已经优化到不能再优化了(MySQL根本没有遍历......
  • uni-app之camera组件-人脸拍摄
    小程序录制视频;10-30秒;需要拍摄人脸,大声朗读数字(123456)这种。1.camera组件camera页面内嵌的区域相机组件。注意这不是点击后全屏打开的相机camera只支持小程序使用;官网链接1.2效果图 1.3页面布局camera设置宽100%,高度通过uni.getSystemInfo获取,全屏展示。在通过定位......
  • CF891E Lust 题解
    题目链接点击打开链接题目解法会不了\(egf\)/ll我们把贡献变成\(\prod\limits_{j\neqi}a_j=\prod\limits_{j=1}^na_j-\prod\limits_{j=1}^n(a_i-[i=j])\)即答案为一开始的乘积\(-\)\(k\)次操作之后所有数乘积的期望因为有顺序,所以用\(egf\)的形式表示最后乘积的期......
  • 出海浪头之上,共探CDN进化新支力
    CDN技术自问世以来已超过20个年头,在云计算与AI深度融合的大趋势下,各行业实际业务需求已发生巨变,下一代CDN技术又将走向何方?8月16日,“抓住泛娱热趋,打通增长脉络——大浪淘沙之后的CDN”技术沙龙活动在深圳圆满结束。阿里云专家与各企业代表,深入探索CDN技术变革之路,携手开启一场关于......
  • Docmatix - 超大文档视觉问答数据集
    本文,我们将发布Docmatix-一个超大的文档视觉问答(DocVQA)数据集,比之前的数据集大100倍。当使用Docmatix微调Florence-2时,消融实验显示DocVQA任务的性能提高了20%。Docmatix数据集样本示例缘起于丹鼎(TheCauldron)的开发,丹鼎包含了50个数据集,旨在用于视......