方式一:
TCHAR run_path[MAX_PATH] = { 0, };
//获取应用程序或者DLL的完整路径
::GetModuleFileName(NULL, run_path, MAX_PATH);
//去掉路径末尾的文件名留下反斜杠
(_tcsrchr(run_path, TEXT('\\')))[1] = 0;
// 设置运行目录
::SetCurrentDirectory(run_path);
方式二:
#include <stdio.h>
#include <Shlwapi.h>
#pragma comment(lib,"shlwapi.lib")
int main()
{
TCHAR szPath[MAX_PATH];
//获取应用程序或者DLL的完整路径
::GetModuleFileName(NULL, szPath, MAX_PATH);
//去掉路径末尾的文件名和反斜杠
::PathRemoveFileSpec(szPath);
printf("%ls\n", szPath);
return 0;
}
方式三
void GetModuleFilePath(IN char* pPath, IN DWORD nSize)
{
char path_buffer[_MAX_PATH] = { 0 };
char drive[_MAX_DRIVE] = { 0 };
char dir[_MAX_DIR] = { 0 };
char fname[_MAX_FNAME] = { 0 };
char ext[_MAX_EXT] = { 0 };
if (NULL == pPath)
{
return;
}
GetModuleFileNameA(NULL, path_buffer, _MAX_PATH);
_splitpath(path_buffer, drive, dir, fname, ext);
strcat(pPath, drive);
strcat(pPath, dir);
}
char path_buffer[_MAX_PATH] = { 0 };
GetModuleFilePath(path_buffer, _MAX_PATH);