关于C#获取应用程序的绝对工作路径问题

C#取应用程序的绝对工作路径

方法1:

public static string GetAppPath() {
      string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
      Regex r = new Regex(@"^[Ff][Ii][Ll][Ee][:][\\]([\S\s]*)");
      Match m = r.Match(appPath);
      if(m.Success) {
        appPath=m.Groups[1].Value;
      }
      return appPath;
}

该方法是取应用程序文件物理存放目录。不论是在注册表开机启动项还是Windows服务运行程序,取出来的结果均一致。

方法2:

Environment.CurrentDirectory

当程序是手动点开运行的话,取出来的路径是应用程序文件物理存放目录。但当程序在Windows服务或开机自启动里运行的话则取出来是C:\Windows\System32。

方法3:

Application.StartupPath

当程序是手动点开运行的话,取出来的路径是应用程序文件物理存放目录。这个方法更奇怪:Window10之前的系统(如Win7\Xp\WindowServer2008等)上把程序做这服务运行或开机自启的话调用该方法取出来是C:\Windows\System32。Win10版本的系统不论在服务里、开机自启里调用该方法都是应用程序文件物理存放目录。

综上所榜,推荐用第一个方法,这样不论程序在哪里调用,取出来的程序路径均一致。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值