把一个窗体程序设置开机自启后,程序开机自启读取的不是我指定位置的config.ini,我指定的是读取启动程序同级目录下的config.ini,它读取的却是C盘system32里的config.ini(我并没有在c盘创建config.ini),而且我手动启动程序或者在调试时,程序能正确读取程序同级目录下的config.ini
开机自启读取文件时使用Environment.CurrentDirectory或使用相对路径可能导致目录指向C盘System文件夹
如果要获取程序根目录,推荐使用Application.StartupPath,可以获得应用程序运行所在的目录,其值等于应用程序启动的根目录
解决办法其实就是把加载文件的路径方法改为用System.Windows.Forms.Application.StartupPath 获取可以保证自启动时一致
问题原因(我也没完全看懂):
来源:System.IO.Directory.GetCurrentDirectory与System.Windows.Forms.Application.StartupPath的用法
.Net Framework中System.IO.Directory.GetCurrentDirectory()方法用于获得应用程序当前工作目录。如果使用此方法获得应用程序所在的目录,应该注意:System.IO.Directory.GetCurrentDirectory()方法获得的目录路径随着OpenFileDialog、SaveFileDialog等对象所确定的目录而改变(切换工作目录)。每打开一次文件夹或者使用资源管理器查看一下文件,都会更改此方法获得的值。
而System.Windows.Forms.Application.StartupPath或System.AppDomain.CurrentDomain.BaseDirectory可以获得应用程序运行所在的目录,它是不随你打开的文件夹而变的。只跟应用程序运行目录有关,其值等于应用程序启动的根目录。例如你安装了程序在了C:\Program Files\程序文件夹 的位置下,那么他就是System.Windows.Forms.Application.StartupPath的值。