怎么求取程序执行的路径名

求助:如何求取程序执行的路径名
在c++中,如何求取程序执行的路径名?用GetModuleFileName得到e:\a\b\c\ee.exe,若只想得到e:\a\b\c\该如何做?除了用GetModuleFileName函数以外,还有其他的方法吗?
望高手指点,谢谢!

------解决方案--------------------
WCHAR szPath[MAX_PATH] = {};
GetModuleFileName(NULL, szPath);
PathAppend(szPath, L"..");

try...
------解决方案--------------------

TCHAR tchBuffer[MAX_PATH ]; 
LPTSTR lpszCurDir;
lpszCurDir = tchBuffer; 
GetCurrentDirectory(MAX_PATH , lpszCurDir);
MessageBox(lpszCurDir);

------解决方案--------------------
引用:
引用:
PathAppend

需要

Minimum DLL Version shlwapi.dll version 4.71 or later
Custom Implementation No
Header shlwapi.h
Import library shlwapi.lib
Minimum operating systems Win……


我觉得用_tsplitpath通用性更好一点
------解决方案--------------------
int main( int argc , char *argv[ ]);
argv[0]就是执行程序名e:\a\b\c\ee.exe。

若想得到e:\a\b\c\,可以自行去掉文件名。或者用boost::file_system.
------解决方案--------------------
引用:
在c++中,如何求取程序执行的路径名?用GetModuleFileName得到e:\a\b\c\ee.exe,若只想得到e:\a\b\c\该如何做?除了用GetModuleFileName函数以外,还有其他的方法吗?
望高手指点,谢谢!

PathRemoveFileSpec 
------解决方案--------------------
额,参考 healer_kx 和 VisualEleven 的提示,写了个测试例子,可以实现.谢谢各位,我权当学习~

#include <Windows.h>
#include <stdio.h>
#include <Shlwapi.h>
#include <tchar.h>

#pragma comment(lib,"shlwapi.lib")

int main()
{
char chPath[MAX_PATH] = {0};
TCHAR szPath[MAX_PATH] = {0};

// 获取当前exe文件所在的路径
GetModuleFileName(NULL,szPath,MAX_PATH);  // 如c:\test\tt.exe

WideCharToMultiByte(CP_ACP,0,szPath,MAX_PATH,chPath,MAX_PATH,NULL,NULL);

printf("the Path:%s\n",chPath); // c:\test\tt.exe

// 分离当前路径,获取目录
PathRemoveFileSpec( szPath );  // c:\test

WideCharToMultiByte(CP_ACP,0,szPath,MAX_PATH,chPath,MAX_PATH,NULL,NULL);

printf("the Directory:%s\n",chPath); // c:\test

return 0;
}