获得当前进程的可执行程序所在的目录

// 所有原创文章转载请注明作者及链接
//
blackboycpp(AT)gmail.com
// QQ群: 135202158

 

 

 

有时我们需要获得当前执行程序所在的目录.
在这种情况下, 不要相信GetCurrentDirectory()函数所得到的目录,
它只是当前工作目录, 而并非exe程序所在目录. 这种情况一般发生在:

    当你在D:/dev/下有一个程序DoFile.exe, 而这个程序会处理E:/file/data.dat,
那么, 在程序执行的某个时刻, 你调用GetCurrentDirectory()函数获得的目录,
实际上是 E:/file, 而非D:/dev. 如果我们需要在程序中调用一些可执行程序目录
下的资源, 比如ini, cfg文件等等, 就会出现错误..

以下代码说明了如何在Visual C++下获得可执行程序的准确目录(当然C++ Builder也支持这种方式):

1. // 更新于2012.1.12

TCHAR szExePath[_MAX_PATH] = {0};
if(::GetModuleFileName(NULL, szExePath, _MAX_PATH) >  0)
{
	int c = _T('\\');
	*_tcsrchr(szExePath, c) = _T('\0');
}


2.old

 

而对于C++ Builder, 利用VCL提供的功能, 可轻松获得:

 

需要注意的是, 前者获得的路径包含/, 后者不包含.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值