Maxbad`Blog

取EXE文件自身所在的文件夹

2021-03-12 · 1 min read

方式一:


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);