1 | //////////////////////////////////////////////////////////// |
---|
2 | // Copyright (C) Roman Ryltsov, 2008-2015 |
---|
3 | // Created by Roman Ryltsov roman@alax.info |
---|
4 | |
---|
5 | #include "stdafx.h" |
---|
6 | #include <windows.h> |
---|
7 | #include <shlobj.h> |
---|
8 | |
---|
9 | int _tmain(int argc, _TCHAR* argv[]) |
---|
10 | { |
---|
11 | OSVERSIONINFOEX VersionInformation = { sizeof VersionInformation }; |
---|
12 | ATLVERIFY(GetVersionEx((OSVERSIONINFO*) &VersionInformation)); |
---|
13 | _tprintf(_T("Windows version %d.%d, Build %d\n"), VersionInformation.dwMajorVersion, VersionInformation.dwMinorVersion, VersionInformation.dwBuildNumber); |
---|
14 | _tprintf(_T("\n")); |
---|
15 | #pragma region CSIDL_xxx |
---|
16 | { |
---|
17 | static const struct |
---|
18 | { |
---|
19 | INT nIdentifier; |
---|
20 | LPCSTR pszName; |
---|
21 | } g_pMap[] = |
---|
22 | { |
---|
23 | #define A(x) { x, #x }, |
---|
24 | A(CSIDL_DESKTOP) |
---|
25 | A(CSIDL_INTERNET) |
---|
26 | A(CSIDL_PROGRAMS) |
---|
27 | A(CSIDL_CONTROLS) |
---|
28 | A(CSIDL_PRINTERS) |
---|
29 | A(CSIDL_PERSONAL) // CSIDL_MYDOCUMENTS |
---|
30 | A(CSIDL_FAVORITES) |
---|
31 | A(CSIDL_STARTUP) |
---|
32 | A(CSIDL_RECENT) |
---|
33 | A(CSIDL_SENDTO) |
---|
34 | A(CSIDL_BITBUCKET) |
---|
35 | A(CSIDL_STARTMENU) |
---|
36 | A(CSIDL_MYMUSIC) |
---|
37 | A(CSIDL_MYVIDEO) |
---|
38 | A(CSIDL_DESKTOPDIRECTORY) |
---|
39 | A(CSIDL_DRIVES) |
---|
40 | A(CSIDL_NETWORK) |
---|
41 | A(CSIDL_NETHOOD) |
---|
42 | A(CSIDL_FONTS) |
---|
43 | A(CSIDL_TEMPLATES) |
---|
44 | A(CSIDL_COMMON_STARTMENU) |
---|
45 | A(CSIDL_COMMON_PROGRAMS) |
---|
46 | A(CSIDL_COMMON_STARTUP) |
---|
47 | A(CSIDL_COMMON_DESKTOPDIRECTORY) |
---|
48 | A(CSIDL_APPDATA) |
---|
49 | A(CSIDL_PRINTHOOD) |
---|
50 | A(CSIDL_LOCAL_APPDATA) |
---|
51 | A(CSIDL_ALTSTARTUP) |
---|
52 | A(CSIDL_COMMON_ALTSTARTUP) |
---|
53 | A(CSIDL_COMMON_FAVORITES) |
---|
54 | A(CSIDL_INTERNET_CACHE) |
---|
55 | A(CSIDL_COOKIES) |
---|
56 | A(CSIDL_HISTORY) |
---|
57 | A(CSIDL_COMMON_APPDATA) |
---|
58 | A(CSIDL_WINDOWS) |
---|
59 | A(CSIDL_SYSTEM) |
---|
60 | A(CSIDL_PROGRAM_FILES) |
---|
61 | A(CSIDL_MYPICTURES) |
---|
62 | A(CSIDL_PROFILE) |
---|
63 | A(CSIDL_SYSTEMX86) |
---|
64 | A(CSIDL_PROGRAM_FILESX86) |
---|
65 | A(CSIDL_PROGRAM_FILES_COMMON) |
---|
66 | A(CSIDL_PROGRAM_FILES_COMMONX86) |
---|
67 | A(CSIDL_COMMON_TEMPLATES) |
---|
68 | A(CSIDL_COMMON_DOCUMENTS) |
---|
69 | A(CSIDL_COMMON_ADMINTOOLS) |
---|
70 | A(CSIDL_ADMINTOOLS) |
---|
71 | A(CSIDL_CONNECTIONS) |
---|
72 | A(CSIDL_COMMON_MUSIC) |
---|
73 | A(CSIDL_COMMON_PICTURES) |
---|
74 | A(CSIDL_COMMON_VIDEO) |
---|
75 | A(CSIDL_RESOURCES) |
---|
76 | A(CSIDL_RESOURCES_LOCALIZED) |
---|
77 | A(CSIDL_COMMON_OEM_LINKS) |
---|
78 | A(CSIDL_CDBURN_AREA) |
---|
79 | A(CSIDL_COMPUTERSNEARME) |
---|
80 | #undef A |
---|
81 | }; |
---|
82 | _tprintf(_T("CSIDL paths:\n\n")); |
---|
83 | for(auto&& Item: g_pMap) |
---|
84 | { |
---|
85 | TCHAR pszPath[MAX_PATH] = { 0 }; |
---|
86 | if(SHGetSpecialFolderPath(NULL, pszPath, Item.nIdentifier, FALSE)) |
---|
87 | _tprintf(_T("%hs: %s\n"), Item.pszName, pszPath); |
---|
88 | else |
---|
89 | _tprintf(_T("%hs not found\n"), Item.pszName); |
---|
90 | } |
---|
91 | _tprintf(_T("\n")); |
---|
92 | } |
---|
93 | #pragma endregion |
---|
94 | #pragma region FOLDERID_xxx |
---|
95 | { |
---|
96 | static const struct |
---|
97 | { |
---|
98 | KNOWNFOLDERID Identifier; |
---|
99 | LPCSTR pszName; |
---|
100 | } g_pMap[] = |
---|
101 | { |
---|
102 | #define A(x) { x, #x }, |
---|
103 | A(FOLDERID_NetworkFolder) |
---|
104 | A(FOLDERID_ComputerFolder) |
---|
105 | A(FOLDERID_InternetFolder) |
---|
106 | A(FOLDERID_ControlPanelFolder) |
---|
107 | A(FOLDERID_PrintersFolder) |
---|
108 | A(FOLDERID_SyncManagerFolder) |
---|
109 | A(FOLDERID_SyncSetupFolder) |
---|
110 | A(FOLDERID_ConflictFolder) |
---|
111 | A(FOLDERID_SyncResultsFolder) |
---|
112 | A(FOLDERID_RecycleBinFolder) |
---|
113 | A(FOLDERID_ConnectionsFolder) |
---|
114 | A(FOLDERID_Fonts) |
---|
115 | A(FOLDERID_Desktop) |
---|
116 | A(FOLDERID_Startup) |
---|
117 | A(FOLDERID_Programs) |
---|
118 | A(FOLDERID_StartMenu) |
---|
119 | A(FOLDERID_Recent) |
---|
120 | A(FOLDERID_SendTo) |
---|
121 | A(FOLDERID_Documents) |
---|
122 | A(FOLDERID_Favorites) |
---|
123 | A(FOLDERID_NetHood) |
---|
124 | A(FOLDERID_PrintHood) |
---|
125 | A(FOLDERID_Templates) |
---|
126 | A(FOLDERID_CommonStartup) |
---|
127 | A(FOLDERID_CommonPrograms) |
---|
128 | A(FOLDERID_CommonStartMenu) |
---|
129 | A(FOLDERID_PublicDesktop) |
---|
130 | A(FOLDERID_ProgramData) |
---|
131 | A(FOLDERID_CommonTemplates) |
---|
132 | A(FOLDERID_PublicDocuments) |
---|
133 | A(FOLDERID_RoamingAppData) |
---|
134 | A(FOLDERID_LocalAppData) |
---|
135 | A(FOLDERID_LocalAppDataLow) |
---|
136 | A(FOLDERID_InternetCache) |
---|
137 | A(FOLDERID_Cookies) |
---|
138 | A(FOLDERID_History) |
---|
139 | A(FOLDERID_System) |
---|
140 | A(FOLDERID_SystemX86) |
---|
141 | A(FOLDERID_Windows) |
---|
142 | A(FOLDERID_Profile) |
---|
143 | A(FOLDERID_Pictures) |
---|
144 | A(FOLDERID_ProgramFilesX86) |
---|
145 | A(FOLDERID_ProgramFilesCommonX86) |
---|
146 | A(FOLDERID_ProgramFilesX64) |
---|
147 | A(FOLDERID_ProgramFilesCommonX64) |
---|
148 | A(FOLDERID_ProgramFiles) |
---|
149 | A(FOLDERID_ProgramFilesCommon) |
---|
150 | A(FOLDERID_UserProgramFiles) |
---|
151 | A(FOLDERID_UserProgramFilesCommon) |
---|
152 | A(FOLDERID_AdminTools) |
---|
153 | A(FOLDERID_CommonAdminTools) |
---|
154 | A(FOLDERID_Music) |
---|
155 | A(FOLDERID_Videos) |
---|
156 | A(FOLDERID_Ringtones) |
---|
157 | A(FOLDERID_PublicPictures) |
---|
158 | A(FOLDERID_PublicMusic) |
---|
159 | A(FOLDERID_PublicVideos) |
---|
160 | A(FOLDERID_PublicRingtones) |
---|
161 | A(FOLDERID_ResourceDir) |
---|
162 | A(FOLDERID_LocalizedResourcesDir) |
---|
163 | A(FOLDERID_CommonOEMLinks) |
---|
164 | A(FOLDERID_CDBurning) |
---|
165 | A(FOLDERID_UserProfiles) |
---|
166 | A(FOLDERID_Playlists) |
---|
167 | A(FOLDERID_SamplePlaylists) |
---|
168 | A(FOLDERID_SampleMusic) |
---|
169 | A(FOLDERID_SamplePictures) |
---|
170 | A(FOLDERID_SampleVideos) |
---|
171 | A(FOLDERID_PhotoAlbums) |
---|
172 | A(FOLDERID_Public) |
---|
173 | A(FOLDERID_ChangeRemovePrograms) |
---|
174 | A(FOLDERID_AppUpdates) |
---|
175 | A(FOLDERID_AddNewPrograms) |
---|
176 | A(FOLDERID_Downloads) |
---|
177 | A(FOLDERID_PublicDownloads) |
---|
178 | A(FOLDERID_SavedSearches) |
---|
179 | A(FOLDERID_QuickLaunch) |
---|
180 | A(FOLDERID_Contacts) |
---|
181 | A(FOLDERID_SidebarParts) |
---|
182 | A(FOLDERID_SidebarDefaultParts) |
---|
183 | A(FOLDERID_PublicGameTasks) |
---|
184 | A(FOLDERID_GameTasks) |
---|
185 | A(FOLDERID_SavedGames) |
---|
186 | A(FOLDERID_Games) |
---|
187 | A(FOLDERID_SEARCH_MAPI) |
---|
188 | A(FOLDERID_SEARCH_CSC) |
---|
189 | A(FOLDERID_Links) |
---|
190 | A(FOLDERID_UsersFiles) |
---|
191 | A(FOLDERID_UsersLibraries) |
---|
192 | A(FOLDERID_SearchHome) |
---|
193 | A(FOLDERID_OriginalImages) |
---|
194 | A(FOLDERID_DocumentsLibrary) |
---|
195 | A(FOLDERID_MusicLibrary) |
---|
196 | A(FOLDERID_PicturesLibrary) |
---|
197 | A(FOLDERID_VideosLibrary) |
---|
198 | A(FOLDERID_RecordedTVLibrary) |
---|
199 | A(FOLDERID_HomeGroup) |
---|
200 | A(FOLDERID_HomeGroupCurrentUser) |
---|
201 | A(FOLDERID_DeviceMetadataStore) |
---|
202 | A(FOLDERID_Libraries) |
---|
203 | A(FOLDERID_PublicLibraries) |
---|
204 | A(FOLDERID_UserPinned) |
---|
205 | A(FOLDERID_ImplicitAppShortcuts) |
---|
206 | A(FOLDERID_AccountPictures) |
---|
207 | A(FOLDERID_PublicUserTiles) |
---|
208 | A(FOLDERID_AppsFolder) |
---|
209 | A(FOLDERID_ApplicationShortcuts) |
---|
210 | A(FOLDERID_RoamingTiles) |
---|
211 | A(FOLDERID_RoamedTileImages) |
---|
212 | A(FOLDERID_Screenshots) |
---|
213 | A(FOLDERID_CameraRoll) |
---|
214 | A(FOLDERID_SkyDrive) |
---|
215 | A(FOLDERID_SkyDriveDocuments) |
---|
216 | A(FOLDERID_SkyDrivePictures) |
---|
217 | A(FOLDERID_SkyDriveMusic) |
---|
218 | A(FOLDERID_SkyDriveCameraRoll) |
---|
219 | A(FOLDERID_SearchHistory) |
---|
220 | A(FOLDERID_SearchTemplates) |
---|
221 | #undef A |
---|
222 | }; |
---|
223 | _tprintf(_T("FOLDERID paths:\n\n")); |
---|
224 | for(auto&& Item: g_pMap) |
---|
225 | { |
---|
226 | CComHeapPtr<TCHAR> pszPath; |
---|
227 | const HRESULT nResult = SHGetKnownFolderPath(Item.Identifier, KF_FLAG_DEFAULT_PATH, NULL, &pszPath); |
---|
228 | if(SUCCEEDED(nResult)) |
---|
229 | _tprintf(_T("%hs: %s\n"), Item.pszName, pszPath); |
---|
230 | else |
---|
231 | _tprintf(_T("%hs not found (0x%08X)\n"), Item.pszName, nResult); |
---|
232 | } |
---|
233 | _tprintf(_T("\n")); |
---|
234 | } |
---|
235 | #pragma endregion |
---|
236 | return 0; |
---|
237 | } |
---|
238 | |
---|