<Win32 API> 获取系统文件夹路径 GetModuleFileName

来源:互联网 发布:软件系统总体设计方案 编辑:程序博客网 时间:2024/05/22 00:23

获取Windows系统文件夹,如我的文档,临时文件夹,桌面,System32文件夹,Windows目录,Program Files应用程序目录等,系统提供了相应的API。

下面是一个简单的示例:

首先需要include:

#include <Shlobj.h>

void GetSystemDir(){wchar_t buffer[MAX_PATH+1] = {0};wcout.imbue(locale("chs"));GetModuleFileName(NULL, buffer, MAX_PATH);wcout << L"当前exe路径: " << buffer << endl;GetCurrentDirectory(MAX_PATH, buffer);wcout << L"当前路径: " << buffer << endl;GetSystemDirectory(buffer, MAX_PATH);wcout << L"System: "  << buffer << endl;GetTempPath(MAX_PATH, buffer);// 末尾带'\'wcout << L"Temp: " << buffer << endl;SHGetSpecialFolderPath(GetDesktopWindow(), buffer, CSIDL_LOCAL_APPDATA, FALSE);wcout << L"Local APPDATA: " << buffer << endl;SHGetSpecialFolderPath(GetDesktopWindow(), buffer, CSIDL_DESKTOP, FALSE);// 桌面文件夹wcout << L"桌面: " << buffer << endl;SHGetSpecialFolderPath(GetDesktopWindow(), buffer, CSIDL_DESKTOPDIRECTORY, FALSE);wcout << L"桌面: " << buffer << endl;SHGetSpecialFolderPath(GetDesktopWindow(), buffer, CSIDL_MYDOCUMENTS/*CSIDL_PERSONAL*/, FALSE);wcout << L"我的文档: " << buffer << endl;SHGetSpecialFolderPath(GetDesktopWindow(), buffer, CSIDL_PROGRAM_FILES, FALSE);wcout << L"应用程序目录: " << buffer << endl;SHGetSpecialFolderPath(GetDesktopWindow(), buffer, CSIDL_PROGRAMS, FALSE);// 开始菜单 Prgramswcout << L"开始程序目录: " << buffer << endl;SHGetSpecialFolderPath(GetDesktopWindow(), buffer, CSIDL_WINDOWS, FALSE);wcout << L"Windows目录: " << buffer << endl;}

这是我的结果:


0 0