文件夹路径获取(Win32, C++)

CFolderUtils是一个C++类,用于获取Windows系统中的各种已知文件夹路径,如Desktop、Documents、Programs等。它利用SHGetKnownFolderPath函数从Shell32库中获取这些路径。类中定义了一系列静态方法,每个方法对应一个特定的文件夹,方便程序中调用。

CFolderUtils.h

#pragma once

#include <wtypesbase.h>
#include <string>

#ifdef _UNICODE
typedef std::wstring _tstring;
#else
typedef std::string _tstring;
#endif

#define DECLARE_FOLDER_API(_fun_name) static _tstring Get##_fun_name();

//已知文件夹
class CFolderUtils
{
public:
        DECLARE_FOLDER_API(NetworkFolder)           //Not applicable—virtual folder
        DECLARE_FOLDER_API(ComputerFolder)          //Not applicable—virtual folder
        DECLARE_FOLDER_API(InternetFolder)          //Not applicable—virtual folder
        DECLARE_FOLDER_API(ControlPanelFolder)      //Not applicable—virtual folder
        DECLARE_FOLDER_API(PrintersFolder)          //Not applicable—virtual folder
        DECLARE_FOLDER_API(SyncManagerFolder)       //Not applicable—virtual folder
        DECLARE_FOLDER_API(SyncSetupFolder)         //Not applicable—virtual folder
        DECLARE_FOLDER_API(ConflictFolder)          //Not applicable—virtual folder
        DECLARE_FOLDER_API(SyncResultsFolder)       //Not applicable—virtual folder
        DECLARE_FOLDER_API(RecycleBinFolder)        //Not applicable—virtual folder
        DECLARE_FOLDER_API(ConnectionsFolder)       //Not applicable—virtual folder
        DECLARE_FOLDER_API(Fonts)                   //%windir%\Fonts
        DECLARE_FOLDER_API(Desktop)                 //%USERPROFILE%\Desktop
        DECLARE_FOLDER_API(Startup)                 //%APPDATA%\Microsoft\Windows\Start Menu\Programs\StartUp
        DECLARE_FOLDER_API(Programs)                //%APPDATA%\Microsoft\Windows\Start Menu\Programs
        DECLARE_FOLDER_API(StartMenu)               //%APPDATA%\Microsoft\Windows\Start Menu
        DECLARE_FOLDER_API(Recent)                  //%APPDATA%\Microsoft\Windows\Recent
        DECLARE_FOLDER_API(SendTo)                  //%APPDATA%\Microsoft\Windows\SendTo
        DECLARE_FOLDER_API(Documents)               //%USERPROFILE%\Documents
        DECLARE_FOLDER_API(Favorites)               //%USERPROFILE%\Favorites
        DECLARE_FOLDER_API(NetHood)                 //%APPDATA%\Microsoft\Windows\Network Shortcuts
        DECLARE_FOLDER_API(PrintHood)               //%APPDATA%\Microsoft\Windows\Printer Shortcuts
        DECLARE_FOLDER_API(Templates)               //%APPDATA%\Microsoft\Windows\Templates
        DECLARE_FOLDER_API(CommonStartup)           //%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\StartUp
        DECLARE_FOLDER_API(CommonPrograms)          //%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs
        DECLARE_FOLDER_API(CommonStartMenu)         //%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu
        DECLARE_FOLDER_API(PublicDesktop)           //%PUBLIC%\Desktop
        DECLARE_FOLDER_API(ProgramData)             //%SystemDrive%\ProgramData)
        DECLARE_FOLDER_API(CommonTemplates)         //%ALLUSERSPROFILE%\Microsoft\Windows\Templates
        DECLARE_FOLDER_API(PublicDocuments)         //%PUBLIC%\Documents
        DECLARE_FOLDER_API(RoamingAppData)          //%APPDATA% (%USERPROFILE%\AppData\Roaming)
        DECLARE_FOLDER_API(LocalAppData)            //%LOCALAPPDATA% (%USERPROFILE%\AppData\Local)
        DECLARE_FOLDER_API(LocalAppDataLow)         //%USERPROFILE%\AppData\LocalLow
        DECLARE_FOLDER_API(InternetCache)           //%LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Files
        DECLARE_FOLDER_API(Cookies)                 //%APPDATA%\Microsoft\Windows\Cookies
        DECLARE_FOLDER_API(History)                 //%LOCALAPPDATA%\Microsoft\Windows\History
        DECLARE_FOLDER_API(System)                  //%windir%\system32
        DECLARE_FOLDER_API(SystemX86)               //%windir%\SysWOW64
        DECLARE_FOLDER_API(Windows)                 //%windir%
        DECLARE_FOLDER_API(Profile)                 //%USERPROFILE% (%SystemDrive%\Users\%USERNAME%)
        DECLARE_FOLDER_API(Pictures)                //%USERPROFILE%\Pictures
        DECLARE_FOLDER_API(ProgramFilesX86)         //%ProgramFiles% (%SystemDrive%\Program Files)
        DECLARE_FOLDER_API(ProgramFilesCommonX86)   //%ProgramFiles%\Common Files
        DECLARE_FOLDER_API(ProgramFilesX64)         //%ProgramFiles% (%SystemDrive%\Program Files)
        DECLARE_FOLDER_API(ProgramFilesCommonX64)   //%ProgramFiles%\Common Files
        DECLARE_FOLDER_API(ProgramFiles)            //%ProgramFiles% (%SystemDrive%\Program Files)
        DECLARE_FOLDER_API(ProgramFilesCommon)      //%ProgramFiles%\Common Files
        DECLARE_FOLDER_API(UserProgramFiles)        //%LOCALAPPDATA%\Programs
        DECLARE_FOLDER_API(UserProgramFilesCommon)  //%LOCALAPPDATA%\Programs\Common
        DECLARE_FOLDER_API(AdminTools)              //%APPDATA%\Microsoft\Windows\Start Menu\Programs\Administrative Tools
        DECLARE_FOLDER_API(CommonAdminTools)        //%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Administrative Tools
        DECLARE_FOLDER_API(Music)                   //%USERPROFILE%\Music
        DECLARE_FOLDER_API(Videos)                  //%USERPROFILE%\Videos
        DECLARE_FOLDER_API(Ringtones)               //%LOCALAPPDATA%\Microsoft\Windows\Ringtones
        DECLARE_FOLDER_API(PublicPictures)          //%PUBLIC%\Pictures
        DECLARE_FOLDER_API(PublicMusic)             //%PUBLIC%\Music
        DECLARE_FOLDER_API(PublicVideos)            //%PUBLIC%\Videos
        DECLARE_FOLDER_API(PublicRingtones)         //%ALLUSERSPROFILE%\Microsoft\Windows\Ringtones
        DECLARE_FOLDER_API(ResourceDir)             //%windir%\Resources
        DECLARE_FOLDER_API(LocalizedResourcesDir)   //%windir%\resources\0409 (code page)
        DECLARE_FOLDER_API(CommonOEMLinks)          //%ALLUSERSPROFILE%\OEM Links
        DECLARE_FOLDER_API(CDBurning)               //%LOCALAPPDATA%\Microsoft\Windows\Burn\Burn
        DECLARE_FOLDER_API(UserProfiles)            //%SystemDrive%\Users
        DECLARE_FOLDER_API(Playlists)               //%USERPROFILE%\Music\Playlists
        DECLARE_FOLDER_API(SamplePlaylists)         //%PUBLIC%\Music\Sample Playlists
        DECLARE_FOLDER_API(SampleMusic)             //%PUBLIC%\Music\Sample Music
        DECLARE_FOLDER_API(SamplePictures)          //%PUBLIC%\Pictures\Sample Pictures
        DECLARE_FOLDER_API(SampleVideos)            //%PUBLIC%\Videos\Sample Videos
        DECLARE_FOLDER_API(PhotoAlbums)             //%USERPROFILE%\Pictures\Slide Shows
        DECLARE_FOLDER_API(Public)                  //%PUBLIC% (%SystemDrive%\Users\Public)
        DECLARE_FOLDER_API(ChangeRemovePrograms)    //Not applicable—virtual folder
        DECLARE_FOLDER_API(AppUpdates)              //Not applicable—virtual folder
        DECLARE_FOLDER_API(AddNewPrograms)          //Not applicable—virtual folder
        DECLARE_FOLDER_API(Downloads)               //%USERPROFILE%\Downloads
        DECLARE_FOLDER_API(PublicDownloads)         //%PUBLIC%\Downloads
        DECLARE_FOLDER_API(SavedSearches)           //%USERPROFILE%\Searches
        DECLARE_FOLDER_API(QuickLaunch)             //%APPDATA%\Microsoft\Internet Explorer\Quick Launch
        DECLARE_FOLDER_API(Contacts)                //%USERPROFILE%\Contacts
        DECLARE_FOLDER_API(SidebarParts)            //%LOCALAPPDATA%\Microsoft\Windows Sidebar\Gadgets
        DECLARE_FOLDER_API(SidebarDefaultParts)     //%ProgramFiles%\Windows Sidebar\Gadgets
        DECLARE_FOLDER_API(PublicGameTasks)         //%ALLUSERSPROFILE%\Microsoft\Windows\GameExplorer
        DECLARE_FOLDER_API(GameTasks)               //%LOCALAPPDATA%\Microsoft\Windows\GameExplorer
        DECLARE_FOLDER_API(SavedGames)              //%USERPROFILE%\Saved Games
        DECLARE_FOLDER_API(Games)                   //Not applicable—virtual folder
        DECLARE_FOLDER_API(SEARCH_MAPI)             //Not applicable—virtual folder
        DECLARE_FOLDER_API(SEARCH_CSC)              //Not applicable—virtual folder
        DECLARE_FOLDER_API(Links)                   //%USERPROFILE%\Links
        DECLARE_FOLDER_API(UsersFiles)              //Not applicable—virtual folder
        DECLARE_FOLDER_API(UsersLibraries)          //Not applicable—virtual folder
        DECLARE_FOLDER_API(SearchHome)              //Not applicable—virtual folder
        DECLARE_FOLDER_API(OriginalImages)          //%LOCALAPPDATA%\Microsoft\Windows Photo Gallery\Original Images
        DECLARE_FOLDER_API(DocumentsLibrary)        //%APPDATA%\Microsoft\Windows\Libraries\Documents.library-ms
        DECLARE_FOLDER_API(MusicLibrary)            //%APPDATA%\Microsoft\Windows\Libraries\Music.library-ms
        DECLARE_FOLDER_API(PicturesLibrary)         //%APPDATA%\Microsoft\Windows\Libraries\Pictures.library-ms
        DECLARE_FOLDER_API(VideosLibrary)           //%APPDATA%\Microsoft\Windows\Libraries\Videos.library-ms
        DECLARE_FOLDER_API(RecordedTVLibrary)       //%PUBLIC%\RecordedTV.library-ms
        DECLARE_FOLDER_API(HomeGroup)               //Not applicable—virtual folder
        DECLARE_FOLDER_API(HomeGroupCurrentUser)    //Not applicable—virtual folder
        DECLARE_FOLDER_API(DeviceMetadataStore)     //%ALLUSERSPROFILE%\Microsoft\Windows\DeviceMetadataStore
        DECLARE_FOLDER_API(Libraries)               //%APPDATA%\Microsoft\Windows\Libraries
        DECLARE_FOLDER_API(PublicLibraries)         //%ALLUSERSPROFILE%\Microsoft\Windows\Libraries
        DECLARE_FOLDER_API(UserPinned)              //%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned
        DECLARE_FOLDER_API(ImplicitAppShortcuts)    //%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\ImplicitAppShortcuts
        DECLARE_FOLDER_API(AccountPictures)         //%APPDATA%\Microsoft\Windows\AccountPictures
        DECLARE_FOLDER_API(PublicUserTiles)         //%PUBLIC%\AccountPictures
        DECLARE_FOLDER_API(AppsFolder)              //Not applicable—virtual folder
        DECLARE_FOLDER_API(StartMenuAllPrograms)    //
        DECLARE_FOLDER_API(CommonStartMenuPlaces)   //
        DECLARE_FOLDER_API(ApplicationShortcuts)    //
        DECLARE_FOLDER_API(RoamingTiles)            //%LOCALAPPDATA%\Microsoft\Windows\RoamingTiles
        DECLARE_FOLDER_API(RoamedTileImages)        //%LOCALAPPDATA%\Microsoft\Windows\RoamedTileImages
        DECLARE_FOLDER_API(Screenshots)             //%USERPROFILE%\Pictures\Screenshots
        DECLARE_FOLDER_API(CameraRoll)              //%USERPROFILE%\Pictures\Camera Roll
        DECLARE_FOLDER_API(SkyDrive)                //%USERPROFILE%\OneDrive
        DECLARE_FOLDER_API(OneDrive)                //%USERPROFILE%\OneDrive
        DECLARE_FOLDER_API(SkyDriveDocuments)       //%USERPROFILE%\OneDrive\Documents
        DECLARE_FOLDER_API(SkyDrivePictures)        //%USERPROFILE%\OneDrive\Pictures
        DECLARE_FOLDER_API(SkyDriveMusic)           //
        DECLARE_FOLDER_API(SkyDriveCameraRoll)      //%USERPROFILE%\OneDrive\Pictures\Camera Roll
        DECLARE_FOLDER_API(SearchHistory)           //%LOCALAPPDATA%\Microsoft\Windows\ConnectedSearch\History
        DECLARE_FOLDER_API(SearchTemplates)         //%LOCALAPPDATA%\Microsoft\Windows\ConnectedSearch\Templates
        DECLARE_FOLDER_API(CameraRollLibrary)       //
        DECLARE_FOLDER_API(SavedPictures)           //%USERPROFILE%\Pictures\Saved Pictures
        DECLARE_FOLDER_API(SavedPicturesLibrary)    //%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Libraries\SavedPictures.library-ms
        DECLARE_FOLDER_API(RetailDemo)              //
        DECLARE_FOLDER_API(Device)                  //
        DECLARE_FOLDER_API(DevelopmentFiles)        //
        DECLARE_FOLDER_API(Objects3D)               //%USERPROFILE%\3D Objects
        DECLARE_FOLDER_API(AppCaptures)             //%USERPROFILE%\Videos\Captures
        DECLARE_FOLDER_API(LocalDocuments)          //%USERPROFILE%\Documents
        DECLARE_FOLDER_API(LocalPictures)           //%USERPROFILE%\Pictures
        DECLARE_FOLDER_API(LocalVideos)             //%USERPROFILE%\Videos
        DECLARE_FOLDER_API(LocalMusic)              //%USERPROFILE%\Music
        DECLARE_FOLDER_API(LocalDownloads)          //%USERPROFILE%\Downloads
        DECLARE_FOLDER_API(RecordedCalls)           //
        DECLARE_FOLDER_API(AllAppMods)              //
        DECLARE_FOLDER_API(CurrentAppMods)          //
        DECLARE_FOLDER_API(AppDataDesktop)          //%LOCALAPPDATA%\Desktop
        DECLARE_FOLDER_API(AppDataDocuments)        //%LOCALAPPDATA%\Documents
        DECLARE_FOLDER_API(AppDataFavorites)        //%LOCALAPPDATA%\Favorites
        DECLARE_FOLDER_API(AppDataProgramData)      //%LOCALAPPDATA%\ProgramData
        DECLARE_FOLDER_API(LocalStorage)            //
};

CFolderUtils.cpp

#include "CFolderUtils.h"
#include <shlobj_core.h>

#pragma comment(lib, "Ole32.lib")
#pragma comment(lib, "Shell32.lib")

#define IMPLEMENT_FOLDER_API(_class, _fun_name) _tstring _class::Get##_fun_name(){return GetKnownFolder(FOLDERID_##_fun_name);}

static _tstring GetKnownFolder(_In_ REFKNOWNFOLDERID rfid)
{
    _tstring strFolder;
    LPWSTR pstr = NULL;
    HRESULT hr = S_OK;
    hr = SHGetKnownFolderPath(rfid, KF_FLAG_DEFAULT, NULL, &pstr);
    if (NULL != pstr)
    {
#ifdef _UNICODE
        strFolder = pstr;
#else
        CHAR szBuf[MAX_PATH] = { 0 };
        int nConverted = ::WideCharToMultiByte(CP_ACP, 0, pstr, -1, szBuf, _countof(szBuf), NULL, NULL);
        if (0 != nConverted)
        {
            strFolder = szBuf;
        }
#endif

        CoTaskMemFree(pstr);
    }

    return strFolder;
}

IMPLEMENT_FOLDER_API(CFolderUtils, NetworkFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, ComputerFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, InternetFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, ControlPanelFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, PrintersFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, SyncManagerFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, SyncSetupFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, ConflictFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, SyncResultsFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, RecycleBinFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, ConnectionsFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, Fonts)
IMPLEMENT_FOLDER_API(CFolderUtils, Desktop)
IMPLEMENT_FOLDER_API(CFolderUtils, Startup)
IMPLEMENT_FOLDER_API(CFolderUtils, Programs)
IMPLEMENT_FOLDER_API(CFolderUtils, StartMenu)
IMPLEMENT_FOLDER_API(CFolderUtils, Recent)
IMPLEMENT_FOLDER_API(CFolderUtils, SendTo)
IMPLEMENT_FOLDER_API(CFolderUtils, Documents)
IMPLEMENT_FOLDER_API(CFolderUtils, Favorites)
IMPLEMENT_FOLDER_API(CFolderUtils, NetHood)
IMPLEMENT_FOLDER_API(CFolderUtils, PrintHood)
IMPLEMENT_FOLDER_API(CFolderUtils, Templates)
IMPLEMENT_FOLDER_API(CFolderUtils, CommonStartup)
IMPLEMENT_FOLDER_API(CFolderUtils, CommonPrograms)
IMPLEMENT_FOLDER_API(CFolderUtils, CommonStartMenu)
IMPLEMENT_FOLDER_API(CFolderUtils, PublicDesktop)
IMPLEMENT_FOLDER_API(CFolderUtils, ProgramData)
IMPLEMENT_FOLDER_API(CFolderUtils, CommonTemplates)
IMPLEMENT_FOLDER_API(CFolderUtils, PublicDocuments)
IMPLEMENT_FOLDER_API(CFolderUtils, RoamingAppData)
IMPLEMENT_FOLDER_API(CFolderUtils, LocalAppData)
IMPLEMENT_FOLDER_API(CFolderUtils, LocalAppDataLow)
IMPLEMENT_FOLDER_API(CFolderUtils, InternetCache)
IMPLEMENT_FOLDER_API(CFolderUtils, Cookies)
IMPLEMENT_FOLDER_API(CFolderUtils, History)
IMPLEMENT_FOLDER_API(CFolderUtils, System)
IMPLEMENT_FOLDER_API(CFolderUtils, SystemX86)
IMPLEMENT_FOLDER_API(CFolderUtils, Windows)
IMPLEMENT_FOLDER_API(CFolderUtils, Profile)
IMPLEMENT_FOLDER_API(CFolderUtils, Pictures)
IMPLEMENT_FOLDER_API(CFolderUtils, ProgramFilesX86)
IMPLEMENT_FOLDER_API(CFolderUtils, ProgramFilesCommonX86)
IMPLEMENT_FOLDER_API(CFolderUtils, ProgramFilesX64)
IMPLEMENT_FOLDER_API(CFolderUtils, ProgramFilesCommonX64)
IMPLEMENT_FOLDER_API(CFolderUtils, ProgramFiles)
IMPLEMENT_FOLDER_API(CFolderUtils, ProgramFilesCommon)
IMPLEMENT_FOLDER_API(CFolderUtils, UserProgramFiles)
IMPLEMENT_FOLDER_API(CFolderUtils, UserProgramFilesCommon)
IMPLEMENT_FOLDER_API(CFolderUtils, AdminTools)
IMPLEMENT_FOLDER_API(CFolderUtils, CommonAdminTools)
IMPLEMENT_FOLDER_API(CFolderUtils, Music)
IMPLEMENT_FOLDER_API(CFolderUtils, Videos)
IMPLEMENT_FOLDER_API(CFolderUtils, Ringtones)
IMPLEMENT_FOLDER_API(CFolderUtils, PublicPictures)
IMPLEMENT_FOLDER_API(CFolderUtils, PublicMusic)
IMPLEMENT_FOLDER_API(CFolderUtils, PublicVideos)
IMPLEMENT_FOLDER_API(CFolderUtils, PublicRingtones)
IMPLEMENT_FOLDER_API(CFolderUtils, ResourceDir)
IMPLEMENT_FOLDER_API(CFolderUtils, LocalizedResourcesDir)
IMPLEMENT_FOLDER_API(CFolderUtils, CommonOEMLinks)
IMPLEMENT_FOLDER_API(CFolderUtils, CDBurning)
IMPLEMENT_FOLDER_API(CFolderUtils, UserProfiles)
IMPLEMENT_FOLDER_API(CFolderUtils, Playlists)
IMPLEMENT_FOLDER_API(CFolderUtils, SamplePlaylists)
IMPLEMENT_FOLDER_API(CFolderUtils, SampleMusic)
IMPLEMENT_FOLDER_API(CFolderUtils, SamplePictures)
IMPLEMENT_FOLDER_API(CFolderUtils, SampleVideos)
IMPLEMENT_FOLDER_API(CFolderUtils, PhotoAlbums)
IMPLEMENT_FOLDER_API(CFolderUtils, Public)
IMPLEMENT_FOLDER_API(CFolderUtils, ChangeRemovePrograms)
IMPLEMENT_FOLDER_API(CFolderUtils, AppUpdates)
IMPLEMENT_FOLDER_API(CFolderUtils, AddNewPrograms)
IMPLEMENT_FOLDER_API(CFolderUtils, Downloads)
IMPLEMENT_FOLDER_API(CFolderUtils, PublicDownloads)
IMPLEMENT_FOLDER_API(CFolderUtils, SavedSearches)
IMPLEMENT_FOLDER_API(CFolderUtils, QuickLaunch)
IMPLEMENT_FOLDER_API(CFolderUtils, Contacts)
IMPLEMENT_FOLDER_API(CFolderUtils, SidebarParts)
IMPLEMENT_FOLDER_API(CFolderUtils, SidebarDefaultParts)
IMPLEMENT_FOLDER_API(CFolderUtils, PublicGameTasks)
IMPLEMENT_FOLDER_API(CFolderUtils, GameTasks)
IMPLEMENT_FOLDER_API(CFolderUtils, SavedGames)
IMPLEMENT_FOLDER_API(CFolderUtils, Games)
IMPLEMENT_FOLDER_API(CFolderUtils, SEARCH_MAPI)
IMPLEMENT_FOLDER_API(CFolderUtils, SEARCH_CSC)
IMPLEMENT_FOLDER_API(CFolderUtils, Links)
IMPLEMENT_FOLDER_API(CFolderUtils, UsersFiles)
IMPLEMENT_FOLDER_API(CFolderUtils, UsersLibraries)
IMPLEMENT_FOLDER_API(CFolderUtils, SearchHome)
IMPLEMENT_FOLDER_API(CFolderUtils, OriginalImages)
IMPLEMENT_FOLDER_API(CFolderUtils, DocumentsLibrary)
IMPLEMENT_FOLDER_API(CFolderUtils, MusicLibrary)
IMPLEMENT_FOLDER_API(CFolderUtils, PicturesLibrary)
IMPLEMENT_FOLDER_API(CFolderUtils, VideosLibrary)
IMPLEMENT_FOLDER_API(CFolderUtils, RecordedTVLibrary)
IMPLEMENT_FOLDER_API(CFolderUtils, HomeGroup)
IMPLEMENT_FOLDER_API(CFolderUtils, HomeGroupCurrentUser)
IMPLEMENT_FOLDER_API(CFolderUtils, DeviceMetadataStore)
IMPLEMENT_FOLDER_API(CFolderUtils, Libraries)
IMPLEMENT_FOLDER_API(CFolderUtils, PublicLibraries)
IMPLEMENT_FOLDER_API(CFolderUtils, UserPinned)
IMPLEMENT_FOLDER_API(CFolderUtils, ImplicitAppShortcuts)
IMPLEMENT_FOLDER_API(CFolderUtils, AccountPictures)
IMPLEMENT_FOLDER_API(CFolderUtils, PublicUserTiles)
IMPLEMENT_FOLDER_API(CFolderUtils, AppsFolder)
IMPLEMENT_FOLDER_API(CFolderUtils, StartMenuAllPrograms)
IMPLEMENT_FOLDER_API(CFolderUtils, CommonStartMenuPlaces)
IMPLEMENT_FOLDER_API(CFolderUtils, ApplicationShortcuts)
IMPLEMENT_FOLDER_API(CFolderUtils, RoamingTiles)
IMPLEMENT_FOLDER_API(CFolderUtils, RoamedTileImages)
IMPLEMENT_FOLDER_API(CFolderUtils, Screenshots)
IMPLEMENT_FOLDER_API(CFolderUtils, CameraRoll)
IMPLEMENT_FOLDER_API(CFolderUtils, SkyDrive)
IMPLEMENT_FOLDER_API(CFolderUtils, OneDrive)
IMPLEMENT_FOLDER_API(CFolderUtils, SkyDriveDocuments)
IMPLEMENT_FOLDER_API(CFolderUtils, SkyDrivePictures)
IMPLEMENT_FOLDER_API(CFolderUtils, SkyDriveMusic)
IMPLEMENT_FOLDER_API(CFolderUtils, SkyDriveCameraRoll)
IMPLEMENT_FOLDER_API(CFolderUtils, SearchHistory)
IMPLEMENT_FOLDER_API(CFolderUtils, SearchTemplates)
IMPLEMENT_FOLDER_API(CFolderUtils, CameraRollLibrary)
IMPLEMENT_FOLDER_API(CFolderUtils, SavedPictures)
IMPLEMENT_FOLDER_API(CFolderUtils, SavedPicturesLibrary)
IMPLEMENT_FOLDER_API(CFolderUtils, RetailDemo)
IMPLEMENT_FOLDER_API(CFolderUtils, Device)
IMPLEMENT_FOLDER_API(CFolderUtils, DevelopmentFiles)
IMPLEMENT_FOLDER_API(CFolderUtils, Objects3D)
IMPLEMENT_FOLDER_API(CFolderUtils, AppCaptures)
IMPLEMENT_FOLDER_API(CFolderUtils, LocalDocuments)
IMPLEMENT_FOLDER_API(CFolderUtils, LocalPictures)
IMPLEMENT_FOLDER_API(CFolderUtils, LocalVideos)
IMPLEMENT_FOLDER_API(CFolderUtils, LocalMusic)
IMPLEMENT_FOLDER_API(CFolderUtils, LocalDownloads)
IMPLEMENT_FOLDER_API(CFolderUtils, RecordedCalls)
IMPLEMENT_FOLDER_API(CFolderUtils, AllAppMods)
IMPLEMENT_FOLDER_API(CFolderUtils, CurrentAppMods)
IMPLEMENT_FOLDER_API(CFolderUtils, AppDataDesktop)
IMPLEMENT_FOLDER_API(CFolderUtils, AppDataDocuments)
IMPLEMENT_FOLDER_API(CFolderUtils, AppDataFavorites)
IMPLEMENT_FOLDER_API(CFolderUtils, AppDataProgramData)
IMPLEMENT_FOLDER_API(CFolderUtils, LocalStorage)

 

 

C++获取当前工作目录路径,可以通过不同的方法实现。一种常用的方法是使用标准库中的`getcwd`函数,它定义在头文件`<direct.h>`(Windows)或`<unistd.h>`(Linux)。下面是一个跨平台的示例代码,展示了如何获取并返回当前工作目录路径: ```cpp #include <iostream> #include <string> #ifdef _WIN32 #include <direct.h> // Windows系统下使用getcwd函数所需的头文件 #else #include <unistd.h> // Linux系统下使用getcwd函数所需的头文件 #endif std::string getCurrentWorkingDirectory() { char buffer[512]; if (getcwd(buffer, sizeof(buffer)) != nullptr) { std::string path(buffer); // 将反斜杠替换为正斜杠以确保一致性(可选) size_t pos = path.find("\\"); while (pos != std::string::npos) { path.replace(pos, 1, "/"); pos = path.find("\\", pos + 1); } return path; } else { return "Failed to get current working directory."; } } int main() { std::cout << "Current Working Directory: " << getCurrentWorkingDirectory() << std::endl; return 0; } ``` 此外,还可以通过Windows API提供的`GetCurrentDirectory`函数来获取当前工作目录[^1]。这种方法通常用于Windows平台的应用程序开发,并且需要包含`windows.h`头文件。以下是一个使用`GetCurrentDirectory`的例子: ```cpp #include <windows.h> #include <iostream> #include <string> std::string getCurrentDirectoryUsingWinAPI() { char buffer[MAX_PATH]; if (GetCurrentDirectory(MAX_PATH, buffer) > 0) { return std::string(buffer); } else { return "Failed to get current directory using Windows API."; } } int main() { std::cout << "Current Directory via Windows API: " << getCurrentDirectoryUsingWinAPI() << std::endl; return 0; } ``` 对于希望获取当前模块(如EXE或DLL)所在路径的情况,可以利用`GetModuleFileName`函数[^1]。这个函数能够提供完整的模块文件名,从中可以提取出目录部分。 最后,在某些场景下可能还需要设置当前工作目录。这可以通过调用`SetCurrentDirectory`函数完成[^1]。此功能允许程序改变其当前的工作目录到指定的位置,这对于后续的文件操作可能会非常有用。 以上方法均可以在不同条件下满足获取当前工作目录的需求,开发者可以根据具体的应用场景选择合适的方式。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值