dll 读文件时文件路径的玄学

在 dll 中读取了一个相对路径文件:config.txt,由于 dll 是在 Windows/System32 下放置且注册的,于是想当然地以为 config.txt 也应该放在 System32 下面,这样 dll 就能找到它。然而在一些软件环境下调用这个 dll 时,有些正常,有些不正常,十分费解。经过反复排查,发现 dll 默认的本地路径是不确定的:

1)对于记事本,已经存在的文件,再次打开后,调用 dll 读取  System32/config.txt

2)  对于 Word(Office),新建文件,调用 dll 读取  System32/config.txt

3)  对于记事本,新建文件,调用 dll 读取  Users/XXX/config.txt

4)对于写字板,新建或已保存文件,调用 dll 不知道读的是哪里的文件,并且没有读到

所以结论是:不要在 dll 中使用相对路径。而要使用绝对路径  C:\\System32\\config.txt

另外发现,保存到  System32 和 SysWOW64 下面的两个 config.txt,实际上是一个,修改其中一个,另一个也变。但是你如果以为这两个文件实际是一个,那么我让 dll 去绝对路径 System32/config.txt 读取不就行了吗?你又错了,当你告诉一个放在 SysWOW64 下的 dll 去读System32/config.txt,它实际还是去读 SysWOW64/config.txt,如果发现没有,又要崩了。

所以,保险的做法是,两个地方都放一份。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值