程序由用户启动与Windows服务启动时工作目录不一致导致结果不同

当一个计算程序以exe方式和Windows服务方式启动时,由于工作目录不同导致读取文件路径错误,从而计算结果不一致。问题在于服务启动时工作目录为system32,无法找到相对路径的文件。解决方案是获取程序当前工作目录并使用绝对路径读取文件,确保一致性。
摘要由CSDN通过智能技术生成

问题:同一套计算程序,采用exe方式启动(用户启动)与采用Windows服务启动所得到的计算结果不一致。

原因分析:改计算程序会读取一个文件(文件与exe文件位于同一文件夹),若文件存在,会读取文件内容参与计算;若文件不存在,则跳过文件读取步骤。

文件采用相对路径方式进行读取,采用exe方式启动时,程序工作目录就是程序当前所在的目录,计算程序可找到该文件;当采用Windows服务启动时,程序工作目录则是默认system32目录,则无法找到该文件,从而导致两种启动方式计算结果不一致。

解决方法:读取文件时,获取程序当前工作目录,采用绝对路径方式读取文件。

//取程序当前工作目录
string basePath = Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory);

参考:安全开发系列-C#-判断程序是由Windows服务启动还是用户启动

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值