.NET C#程序启动闪退,在安装或者程序文件下能正常运行,但通过路径却无法运行
.NET C#程序启动闪退,目录导致的问题
这是第2次踩这个坑了,很小的编程细节,容易忽略,所以写个博客,分享给大家。
1.第一次坑:是windows 系统把程序运行成服务,找不到配置文件,原因是以服务运行它的工作目录是在C:\Windows\System32
2.本次坑:WPF桌面程序通过注册表设置开机自启,开机启动就闪退
我的排查流程:
1.使用注册表中配置的绝对路径,直接进入该文件夹中双击运行,验证程序和路径正确性,结果:失败。但管理员却能运行。原因是inno setup打包的时候设置了需要管理员运行。于是重新打包。虽然直接双击可以运行,但开机自启依然不行
2.于是我换了一个方式,在文件夹管理器直接使用绝对路径访问运行,结果:失败。当时怀疑,问题依然是:权限或者打包软件问题,但经过反复验证是正常的,于是问了一下gpt,他给了一个方向:(应用程序依赖资源文件路径问题: 如您的应用程序在运行时依赖于某些资源文件(如配置文件、数据库文件、dll等)。我当时想都能正常运行肯定没问题,但大脑还是抱着质疑的态度在脑海里面扫描一遍可能出现路径暗坑的代码,然后灵感一闪,想起来我的配置文件读取只写了一个文件名,原因也是程序工作目录导致的,然后进行代码修正,完美解决
原因
如果您通过某个路径间接启动程序(例如通过快捷方式、命令行指定的目录或是其他方式),这时当前工作目录可能不再是程序本身的目录,而是变成了启动程序的所在目录或者是命令行指定的工作目录,这就可能导致程序无法找到(如配置文件、数据库文件、dll等) 文件
解决方案
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "文件名.json")
所以大家编程的时候操作文件资源相关代码路径推荐这种写法,避免通过其他方式启动的时候程序崩溃。除非你希望你的文件资源在工作目录下操作,但这样会导致不可控,不建议
.NET C#程序启动闪退,在安装或者程序文件下能正常运行,但通过路径却无法运行的更多相关文章
- eclipse 启动 闪退
eclipse启动闪退 打开eclipse安装文件夹中的eclipse.ini文件. 把Xmx1024m修改为Xmx512m,可以解决闪退问题.
- Zookeeper——启动闪退
Zookeeper好久不启动了,昨天项目要用Zookeeper了,我昨天突然启动它,调皮的zk居然害羞不让我看见它,启动不了,一启动就闪退,为啥呢?其实是因为报错了,有错zk启动时就会报错,所以昨 ...
- 升级iOS10之后调用摄像头/麦克风等硬件程序崩溃闪退的问题
在升级到iOS10之后, 开发过程中难免会遇到很多的坑, 下面是一些常见的坑, 我做了一些整理, 希望对大家开发有帮助: &1. 调用视频,摄像头, 麦克风,等硬件程序崩溃闪退的问题: 要注意 ...
- Tomcat - 启动闪退
版本:Tomcat 9 问题:启动闪退.在控制台中输入"java -version"可以正常输出java的版本信息,但是使用start.bat启动时候闪退. 解决方法:配置系统环境 ...
- windos 安装 redis 启动闪退
本来想在linux上安装redis的,后来觉得也没必要,主要是了解使用方法,和原理,在什么平台上安装都是大同小异的 接下来简单描述下碰到的小问题:闪退和启动失败 究其原因就是端口被占用了,但是自己并没 ...
- iReport 5.6.0 启动闪退的问题 解决方案
问题描述 本人使用的Windows版本的 iReport 5.6.0,安装成功后,双击桌面上的iReport-5.6.0图标,出现了闪退,无法正常启动的现象.现象如下: 问题原因 iReport 5. ...
- JavaWeb之问题集(1) —— Tomcat启动闪退
1. 问题描述 环境: System:Windows 10 Professional JDK:1.8.0.212 Tomcat:9.0.22 原本可以正常的启动和关闭,后来突然的就无法使用了,无法启动 ...
- MongoDB启动闪退问题完美解决
如果你看到这篇文章,说明你也遇到了启动MongoDB闪退的情况.由于只是学习MongoDB,所以很多人不想使用MongoDB的安装版,而使用免安装版.但是在启动mongod.exe 的时候,就会出现闪 ...
- iOS-中app启动闪退的原因
这种情况应和所谓的内存不足关系不大,很少有程序会在初始化时载入大量内容导致崩溃,并且这类问题也很容易在开发阶段被发现,所以内存不足造成秒退的可能性低(内存不足退,通常是程序用了一段时间,切换了几个画面 ...
- iOS中app启动闪退的原因
这种情况应和所谓的内存不足关系不大,很少有程序会在初始化时载入大量内容导致崩溃,并且这类问题也很容易在开发阶段被发现,所以内存不足造成秒退的可能性低(内存不足退,通常是程序用了一段时间,切换了几个画面 ...
随机推荐
- spring mvc框架常用注解及用途
@Controller:用于标识是处理器类: @RequestMapping:请求到处理器功能方法的映射规则: @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定: @Mode ...
- Javscript数组的常用方法有哪些?
数组基本操作可以归纳为 增.删.改.查,需要留意的是哪些方法会对原数组产生影响,哪些方法不会 下面对数组常用的操作方法做一个归纳 增 下面前三种是对原数组产生影响的增添方法,第四种则不会对原数组产生影 ...
- 力扣579(MySQL)-查询员工的累积薪水(困难)
题目: Employee 表保存了一年内的薪水信息. 请你编写 SQL 语句,对于每个员工,查询他除最近一个月(即最大月)之外,剩下每个月的近三个月的累计薪水(不足三个月也要计算). 结果请按 Id ...
- Java编程技巧之单元测试用例编写流程
简介: 立足于"如何来编写单元测试用例",让大家"有章可循",快速编写出单元测试用例. 作者 | 常意来源 | 阿里技术公众号 温馨提示:本文较长,同学们可收藏 ...
- 好代码实践:基于Redis的轻量级分布式均衡消费队列
简介: 好代码,给人第一个印象的感觉,就像一篇好文章一样,读起来朗朗上口.不同的文章有不同的风格体裁,不同的代码也有不同的编程风格要求.Python有严格的缩进,像诗歌一样工整对仗:C语言面向过程像散 ...
- Roslyn 分析器 EnforceExtendedAnalyzerRules 属性的作用
在开始编写 dotnet 的 Roslyn 分析器项目时,会被 VisualStudio 通过 RS1036 要求在项目文件配置上 EnforceExtendedAnalyzerRules 属性,本文 ...
- netcore5下js请求跨域
后端代码如下: using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System ...
- C语言程序设计-笔记04-函数
C语言程序设计-笔记04-函数 例5-1 计算圆柱体的体积.输入圆柱的高和半径,求圆柱体积volume=πxr^2xh.要求定义和调用函数cylinder(r,h)计算圆柱体的体积. #includ ...
- Go-Zero微服务快速入门和最佳实践(一)
前言 并发编程和分布式微服务是我们Gopher升职加薪的关键. 毕竟Go基础很容易搞定,不管你是否有编程经验,都可以比较快速的入门Go语言进行简单项目的开发. 虽说好上手,但是想和别人拉开差距,提高自 ...
- Solution Set - 加训 CF!
加训一些 CF 题,这里写一些简要题解,可能是草稿. 暂定只做 Div.1 的题和 Div.1+Div.2 的后一半题.