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

Posted 小哈龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了<Win32 API> 获取系统文件夹路径相关的知识,希望对你有一定的参考价值。

本文转载自:https://blog.csdn.net/meta_cpp/article/details/41959585

获取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);        // 开始菜单 Prgrams
    wcout << L"开始程序目录: " << buffer << endl;
 
    SHGetSpecialFolderPath(GetDesktopWindow(), buffer, CSIDL_WINDOWS, FALSE);
    wcout << L"Windows目录: " << buffer << endl;
 

这是我的结果:

 

以上是关于<Win32 API> 获取系统文件夹路径的主要内容,如果未能解决你的问题,请参考以下文章

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

如何从 Win32 API 中的总线关系中获取设备实例路径

Win32 WNet API 和 NFS 路径的问题

win32 API 搜索路径失败

用于获取活动目录票的 Win32 API?

Win32 API之绘图函数