Chuyu-Team / YY-Thunks

Fix DecodePointer, EncodePointer,RegDeleteKeyEx etc. APIs not found in Windows XP RTM.
MIT License
497 stars 102 forks source link

Implement more mapping for KnownFoldersIdsMap #19

Closed lygstate closed 3 years ago

lygstate commented 3 years ago

At least:


                    //{ FOLDERID_Downloads, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_PublicDownloads, CSIDL_CDBURN_AREA },

            //Vista以后的Shell32.dll 有个 kfapi::GetFolderIdByCSIDL,我们可以根据它可以反推出出 下面的KnownFoldersIdToCSIDL
            static int __fastcall KnownFoldersIdToCSIDL(const GUID& rfid)
            {

                constexpr static const KnownFoldersIdKey KnownFoldersIdsMap[] =
                {
                    { FOLDERID_Windows, CSIDL_WINDOWS },
                    { FOLDERID_ProgramFilesCommon, CSIDL_PROGRAM_FILES_COMMON },
                    { FOLDERID_PublicDesktop, CSIDL_COMMON_DESKTOPDIRECTORY },
                    { FOLDERID_CDBurning, CSIDL_CDBURN_AREA },
                    { FOLDERID_CommonStartMenu, CSIDL_COMMON_STARTMENU },
                    { FOLDERID_Videos, CSIDL_MYVIDEO },
                    { FOLDERID_ProgramFilesCommonX86, CSIDL_PROGRAM_FILES_COMMONX86 },
                    { FOLDERID_ConnectionsFolder, CSIDL_CONNECTIONS },
                    { FOLDERID_PrintersFolder, CSIDL_PRINTERS },
                    { FOLDERID_Pictures, CSIDL_MYPICTURES },
                    { FOLDERID_ResourceDir, CSIDL_RESOURCES },
                    { FOLDERID_CommonStartup, CSIDL_COMMON_STARTUP /*等价CSIDL_COMMON_ALTSTARTUP*/},
                    { FOLDERID_PublicVideos, CSIDL_COMMON_VIDEO },
                    { FOLDERID_Desktop, CSIDL_DESKTOP /*等价CSIDL_DESKTOPDIRECTORY*/},
                    { FOLDERID_History, CSIDL_HISTORY },
                    { FOLDERID_SamplePictures, CSIDL_COMMON_PICTURES }, //做个兼容处理吧,反正都是放图片的
                    { FOLDERID_RecycleBinFolder, CSIDL_BITBUCKET },
                    { FOLDERID_CommonPrograms, CSIDL_COMMON_PROGRAMS },
                    { FOLDERID_NetHood, CSIDL_NETHOOD },
                    { FOLDERID_Cookies, CSIDL_COOKIES },
                    { FOLDERID_LocalizedResourcesDir, CSIDL_RESOURCES_LOCALIZED },
                    { FOLDERID_Favorites, CSIDL_FAVORITES /*等价于CSIDL_COMMON_FAVORITES*/},
                    { FOLDERID_SampleMusic, CSIDL_COMMON_MUSIC }, //做个兼容处理吧,反正都是放音乐的
                    { FOLDERID_SendTo, CSIDL_SENDTO },
                    { FOLDERID_AdminTools, CSIDL_ADMINTOOLS },
                    { FOLDERID_Music, CSIDL_MYMUSIC },
                    { FOLDERID_InternetFolder, CSIDL_INTERNET },
                    { FOLDERID_System, CSIDL_SYSTEM },
                    { FOLDERID_Programs, CSIDL_PROGRAMS },
#ifdef _AMD64_
                    { FOLDERID_ProgramFilesX64, CSIDL_PROGRAM_FILES }, //兼容下,反正 x64路径 跟 普通的是一样的。
#endif
                    { FOLDERID_ComputerFolder, CSIDL_DRIVES },
                    { FOLDERID_CommonAdminTools, CSIDL_COMMON_ADMINTOOLS },
                    { FOLDERID_Recent, CSIDL_RECENT },
                    { FOLDERID_ProgramData, CSIDL_COMMON_APPDATA },
                    { FOLDERID_LocalAppData, CSIDL_LOCAL_APPDATA },
                    { FOLDERID_PublicPictures, CSIDL_COMMON_PICTURES },
                    { FOLDERID_PrintHood, CSIDL_PRINTHOOD },
                    { FOLDERID_Profile, CSIDL_PROFILE },
                    { FOLDERID_SampleVideos, CSIDL_COMMON_VIDEO }, //做个兼容处理吧,反正都是放视频的
                    { FOLDERID_LocalAppDataLow, CSIDL_LOCAL_APPDATA }, //兼容下,直接用AppData
#ifdef _AMD64_
                    { FOLDERID_ProgramFilesCommonX64, CSIDL_PROGRAM_FILES_COMMON }, //兼容下,反正 x64路径 跟 普通的是一样的。
#endif
                    { FOLDERID_PublicDocuments, CSIDL_COMMON_DOCUMENTS },
                    { FOLDERID_SystemX86, CSIDL_SYSTEMX86 },
                    { FOLDERID_PublicMusic, CSIDL_COMMON_MUSIC },
                    { FOLDERID_ProgramFiles, CSIDL_PROGRAM_FILES },
                    { FOLDERID_Fonts, CSIDL_FONTS },
                    { FOLDERID_Startup, CSIDL_STARTUP /*等效CSIDL_ALTSTARTUP*/},
                    { FOLDERID_StartMenu, CSIDL_STARTMENU },
                    { FOLDERID_NetworkFolder, CSIDL_NETWORK /*等效CSIDL_COMPUTERSNEARME*/},
                    { FOLDERID_Documents, CSIDL_MYDOCUMENTS },
                    { FOLDERID_CommonOEMLinks, CSIDL_COMMON_OEM_LINKS },
                    { FOLDERID_RoamingAppData, CSIDL_APPDATA },
                    { FOLDERID_CommonTemplates, CSIDL_COMMON_TEMPLATES },
                    { FOLDERID_InternetCache, CSIDL_INTERNET_CACHE },
                    { FOLDERID_Templates, CSIDL_TEMPLATES },
                    { FOLDERID_ControlPanelFolder, CSIDL_CONTROLS },
                    { FOLDERID_ProgramFilesX86, CSIDL_PROGRAM_FILESX86 },

                    //{ FOLDERID_SyncManagerFolder, CSIDL_PRINTERS },
                    //{ FOLDERID_SyncSetupFolder, CSIDL_PRINTERS },
                    //{ FOLDERID_ConflictFolder, CSIDL_PRINTERS },
                    //{ FOLDERID_SyncResultsFolder, CSIDL_PRINTERS },
                    //{ FOLDERID_UserProgramFiles, CSIDL_PROGRAM_FILES_COMMON },
                    //{ FOLDERID_UserProgramFilesCommon, CSIDL_PROGRAM_FILES_COMMON },
                    //{ FOLDERID_Ringtones, CSIDL_MYVIDEO },
                    //{ FOLDERID_PublicRingtones, CSIDL_COMMON_VIDEO },
                    //{ FOLDERID_UserProfiles, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_Playlists, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_SamplePlaylists, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_PhotoAlbums, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_Public, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_ChangeRemovePrograms, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_AppUpdates, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_AddNewPrograms, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_Downloads, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_PublicDownloads, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_SavedSearches, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_QuickLaunch, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_Contacts, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_SidebarParts, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_SidebarDefaultParts, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_PublicGameTasks, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_GameTasks, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_SavedGames, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_Games, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_SEARCH_MAPI, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_SEARCH_CSC, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_Links, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_UsersFiles, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_UsersLibraries, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_SearchHome, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_OriginalImages, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_DocumentsLibrary, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_MusicLibrary, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_PicturesLibrary, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_VideosLibrary, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_RecordedTVLibrary, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_HomeGroup, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_HomeGroupCurrentUser, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_DeviceMetadataStore, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_Libraries, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_PublicLibraries, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_UserPinned, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_ImplicitAppShortcuts, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_AccountPictures, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_PublicUserTiles, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_AppsFolder, CSIDL_CDBURN_AREA },
                    //{ FOLDERID_StartMenuAllPrograms, CSIDL_CDBURN_AREA },
                };
mingkuang-Chuyu commented 3 years ago

What do you want to say? No code changes……

lygstate commented 3 years ago

我在想能不能走一个自定义的 CSIDL_ID,然后配置好 FOLDERID_Downloads,FOLDERID_PublicDownloads

mingkuang-Chuyu commented 3 years ago

那我有点明白了,以后有问题就把问题描述清楚…… 你想要做什么。 为什么要这样做。 你想要怎么改。 等等

mingkuang-Chuyu commented 3 years ago

然后你需要怎么做?如何做? 支持 FOLDERID_Downloads 的意义主要是什么? 是否有这样的实际使用场景?

lygstate commented 3 years ago

嗯嗯也许不合理 先关闭