GetCurrentDirectory获取当前目录而不是当前执行文件的目录

本文解释了GetCurrentDirectory与GetModuleFileName的区别。GetCurrentDirectory获取的是当前工作目录,并且该目录可能会因为文件对话框的操作而改变;GetModuleFileName则用于获取可执行文件的确切路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天用GetCurrentDirectory来获取可执行文件目录时发现,这个函数不是用来获取当前执行文件的目录。而是获取当前目录,含义是不一样的。
当前目录时类似缓存的东西。指向一个目录,这个当前目录可以更改。
百度百科:
注意当前目录这东西有点怪异,本来确实是可执行文件的所在目录,但是当用文件对话框成功打开一个文件后,该目录就被修改为被打开的文件所在目录。比如在程序中使用"123.txt"这样的文件名,希望将它存储在exe文件所在目录中,但是当用户用文件对话框打开一个文件"F:\456.txt"后,这个123.txt会被存储到F盘下。(VC2005下的情况,其他VC版本待验证)
今天做了个例子。
用一个程序调用不同目录的子程序。在子程序中用这个函数获取当前目录,获取的是父进程可执行文件所在的目录。
若想获取可执行文件的目录,可用GetModuleFileName。
记录一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值