1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 using System;
6 using System.Runtime.InteropServices;
7 
8 internal partial class Interop
9 {
10     internal partial class Shell32
11     {
12         internal const int COR_E_PLATFORMNOTSUPPORTED = unchecked((int)0x80131539);
13 
14         // https://msdn.microsoft.com/en-us/library/windows/desktop/bb762188.aspx
15         [DllImport(Libraries.Shell32, CharSet = CharSet.Unicode, SetLastError = false, BestFitMapping = false, ExactSpelling = true)]
SHGetKnownFolderPath( [MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags, IntPtr hToken, out string ppszPath)16         internal static extern int SHGetKnownFolderPath(
17             [MarshalAs(UnmanagedType.LPStruct)] Guid rfid,
18             uint dwFlags,
19             IntPtr hToken,
20             out string ppszPath);
21 
22         // https://msdn.microsoft.com/en-us/library/windows/desktop/dd378457.aspx
23         internal static class KnownFolders
24         {
25             /// <summary>
26             /// (CSIDL_ADMINTOOLS) Per user Administrative Tools
27             /// "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Administrative Tools"
28             /// </summary>
29             internal const string AdminTools = "{724EF170-A42D-4FEF-9F26-B60E846FBA4F}";
30 
31             /// <summary>
32             /// (CSIDL_CDBURN_AREA) Temporary Burn folder
33             /// "%LOCALAPPDATA%\Microsoft\Windows\Burn\Burn"
34             /// </summary>
35             internal const string CDBurning = "{9E52AB10-F80D-49DF-ACB8-4330F5687855}";
36 
37             /// <summary>
38             /// (CSIDL_COMMON_ADMINTOOLS) Common Administrative Tools
39             /// "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Administrative Tools"
40             /// </summary>
41             internal const string CommonAdminTools = "{D0384E7D-BAC3-4797-8F14-CBA229B392B5}";
42 
43             /// <summary>
44             /// (CSIDL_COMMON_OEM_LINKS) OEM Links folder
45             /// "%ALLUSERSPROFILE%\OEM Links"
46             /// </summary>
47             internal const string CommonOEMLinks = "{C1BAE2D0-10DF-4334-BEDD-7AA20B227A9D}";
48 
49             /// <summary>
50             /// (CSIDL_COMMON_PROGRAMS) Common Programs folder
51             /// "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs"
52             /// </summary>
53             internal const string CommonPrograms = "{0139D44E-6AFE-49F2-8690-3DAFCAE6FFB8}";
54 
55             /// <summary>
56             /// (CSIDL_COMMON_STARTMENU) Common Start Menu folder
57             /// "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu"
58             /// </summary>
59             internal const string CommonStartMenu = "{A4115719-D62E-491D-AA7C-E74B8BE3B067}";
60 
61             /// <summary>
62             /// (CSIDL_COMMON_STARTUP, CSIDL_COMMON_ALTSTARTUP) Common Startup folder
63             /// "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\StartUp"
64             /// </summary>
65             internal const string CommonStartup = "{82A5EA35-D9CD-47C5-9629-E15D2F714E6E}";
66 
67             /// <summary>
68             /// (CSIDL_COMMON_TEMPLATES) Common Templates folder
69             /// "%ALLUSERSPROFILE%\Microsoft\Windows\Templates"
70             /// </summary>
71             internal const string CommonTemplates = "{B94237E7-57AC-4347-9151-B08C6C32D1F7}";
72 
73             /// <summary>
74             /// (CSIDL_DRIVES) Computer virtual folder
75             /// </summary>
76             internal const string ComputerFolder = "{0AC0837C-BBF8-452A-850D-79D08E667CA7}";
77 
78             /// <summary>
79             /// (CSIDL_CONNECTIONS) Network Connections virtual folder
80             /// </summary>
81             internal const string ConnectionsFolder = "{6F0CD92B-2E97-45D1-88FF-B0D186B8DEDD}";
82 
83             /// <summary>
84             /// (CSIDL_CONTROLS) Control Panel virtual folder
85             /// </summary>
86             internal const string ControlPanelFolder = "{82A74AEB-AEB4-465C-A014-D097EE346D63}";
87 
88             /// <summary>
89             /// (CSIDL_COOKIES) Cookies folder
90             /// "%APPDATA%\Microsoft\Windows\Cookies"
91             /// </summary>
92             internal const string Cookies = "{2B0F765D-C0E9-4171-908E-08A611B84FF6}";
93 
94             /// <summary>
95             /// (CSIDL_DESKTOP, CSIDL_DESKTOPDIRECTORY) Desktop folder
96             /// "%USERPROFILE%\Desktop"
97             /// </summary>
98             internal const string Desktop = "{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}";
99 
100             /// <summary>
101             /// (CSIDL_MYDOCUMENTS, CSIDL_PERSONAL) Documents (My Documents) folder
102             /// "%USERPROFILE%\Documents"
103             /// </summary>
104             internal const string Documents = "{FDD39AD0-238F-46AF-ADB4-6C85480369C7}";
105 
106             /// <summary>
107             /// (CSIDL_FAVORITES, CSIDL_COMMON_FAVORITES) Favorites folder
108             /// "%USERPROFILE%\Favorites"
109             /// </summary>
110             internal const string Favorites = "{1777F761-68AD-4D8A-87BD-30B759FA33DD}";
111 
112             /// <summary>
113             /// (CSIDL_FONTS) Fonts folder
114             /// "%windir%\Fonts"
115             /// </summary>
116             internal const string Fonts = "{FD228CB7-AE11-4AE3-864C-16F3910AB8FE}";
117 
118             /// <summary>
119             /// (CSIDL_HISTORY) History folder
120             /// "%LOCALAPPDATA%\Microsoft\Windows\History"
121             /// </summary>
122             internal const string History = "{D9DC8A3B-B784-432E-A781-5A1130A75963}";
123 
124             /// <summary>
125             /// (CSIDL_INTERNET_CACHE) Temporary Internet Files folder
126             /// "%LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Files"
127             /// </summary>
128             internal const string InternetCache = "{352481E8-33BE-4251-BA85-6007CAEDCF9D}";
129 
130             /// <summary>
131             /// (CSIDL_INTERNET) The Internet virtual folder
132             /// </summary>
133             internal const string InternetFolder = "{4D9F7874-4E0C-4904-967B-40B0D20C3E4B}";
134 
135             /// <summary>
136             /// (CSIDL_LOCAL_APPDATA) Local folder
137             /// "%LOCALAPPDATA%" ("%USERPROFILE%\AppData\Local")
138             /// </summary>
139             internal const string LocalAppData = "{F1B32785-6FBA-4FCF-9D55-7B8E7F157091}";
140 
141             /// <summary>
142             /// (CSIDL_RESOURCES_LOCALIZED) Fixed localized resources folder
143             /// "%windir%\resources\0409" (per active codepage)
144             /// </summary>
145             internal const string LocalizedResourcesDir = "{2A00375E-224C-49DE-B8D1-440DF7EF3DDC}";
146 
147             /// <summary>
148             /// (CSIDL_MYMUSIC) Music folder
149             /// "%USERPROFILE%\Music"
150             /// </summary>
151             internal const string Music = "{4BD8D571-6D19-48D3-BE97-422220080E43}";
152 
153             /// <summary>
154             /// (CSIDL_NETHOOD) Network shortcuts folder "%APPDATA%\Microsoft\Windows\Network Shortcuts"
155             /// </summary>
156             internal const string NetHood = "{C5ABBF53-E17F-4121-8900-86626FC2C973}";
157 
158             /// <summary>
159             /// (CSIDL_NETWORK, CSIDL_COMPUTERSNEARME) Network virtual folder
160             /// </summary>
161             internal const string NetworkFolder = "{D20BEEC4-5CA8-4905-AE3B-BF251EA09B53}";
162 
163             /// <summary>
164             /// (CSIDL_MYPICTURES) Pictures folder "%USERPROFILE%\Pictures"
165             /// </summary>
166             internal const string Pictures = "{33E28130-4E1E-4676-835A-98395C3BC3BB}";
167 
168             /// <summary>
169             /// (CSIDL_PRINTERS) Printers virtual folder
170             /// </summary>
171             internal const string PrintersFolder = "{76FC4E2D-D6AD-4519-A663-37BD56068185}";
172 
173             /// <summary>
174             /// (CSIDL_PRINTHOOD) Printer Shortcuts folder
175             /// "%APPDATA%\Microsoft\Windows\Printer Shortcuts"
176             /// </summary>
177             internal const string PrintHood = "{9274BD8D-CFD1-41C3-B35E-B13F55A758F4}";
178 
179             /// <summary>
180             /// (CSIDL_PROFILE) The root users profile folder "%USERPROFILE%"
181             /// ("%SystemDrive%\Users\%USERNAME%")
182             /// </summary>
183             internal const string Profile = "{5E6C858F-0E22-4760-9AFE-EA3317B67173}";
184 
185             /// <summary>
186             /// (CSIDL_COMMON_APPDATA) ProgramData folder
187             /// "%ALLUSERSPROFILE%" ("%ProgramData%", "%SystemDrive%\ProgramData")
188             /// </summary>
189             internal const string ProgramData = "{62AB5D82-FDC1-4DC3-A9DD-070D1D495D97}";
190 
191             /// <summary>
192             /// (CSIDL_PROGRAM_FILES) Program Files folder for the current process architecture
193             /// "%ProgramFiles%" ("%SystemDrive%\Program Files")
194             /// </summary>
195             internal const string ProgramFiles = "{905e63b6-c1bf-494e-b29c-65b732d3d21a}";
196 
197             /// <summary>
198             /// (CSIDL_PROGRAM_FILESX86) 32 bit Program Files folder (available to both 32/64 bit processes)
199             /// </summary>
200             internal const string ProgramFilesX86 = "{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}";
201 
202             /// <summary>
203             /// (CSIDL_PROGRAM_FILES_COMMON) Common Program Files folder for the current process architecture
204             /// "%ProgramFiles%\Common Files"
205             /// </summary>
206             internal const string ProgramFilesCommon = "{F7F1ED05-9F6D-47A2-AAAE-29D317C6F066}";
207 
208             /// <summary>
209             /// (CSIDL_PROGRAM_FILES_COMMONX86) Common 32 bit Program Files folder (available to both 32/64 bit processes)
210             /// </summary>
211             internal const string ProgramFilesCommonX86 = "{DE974D24-D9C6-4D3E-BF91-F4455120B917}";
212 
213             /// <summary>
214             /// (CSIDL_PROGRAMS) Start menu Programs folder
215             /// "%APPDATA%\Microsoft\Windows\Start Menu\Programs"
216             /// </summary>
217             internal const string Programs = "{A77F5D77-2E2B-44C3-A6A2-ABA601054A51}";
218 
219             /// <summary>
220             /// (CSIDL_COMMON_DESKTOPDIRECTORY) Public Desktop folder
221             /// "%PUBLIC%\Desktop"
222             /// </summary>
223             internal const string PublicDesktop = "{C4AA340D-F20F-4863-AFEF-F87EF2E6BA25}";
224 
225             /// <summary>
226             /// (CSIDL_COMMON_DOCUMENTS) Public Documents folder
227             /// "%PUBLIC%\Documents"
228             /// </summary>
229             internal const string PublicDocuments = "{ED4824AF-DCE4-45A8-81E2-FC7965083634}";
230 
231             /// <summary>
232             /// (CSIDL_COMMON_MUSIC) Public Music folder
233             /// "%PUBLIC%\Music"
234             /// </summary>
235             internal const string PublicMusic = "{3214FAB5-9757-4298-BB61-92A9DEAA44FF}";
236 
237             /// <summary>
238             /// (CSIDL_COMMON_PICTURES) Public Pictures folder
239             /// "%PUBLIC%\Pictures"
240             /// </summary>
241             internal const string PublicPictures = "{B6EBFB86-6907-413C-9AF7-4FC2ABF07CC5}";
242 
243             /// <summary>
244             /// (CSIDL_COMMON_VIDEO) Public Videos folder
245             /// "%PUBLIC%\Videos"
246             /// </summary>
247             internal const string PublicVideos = "{2400183A-6185-49FB-A2D8-4A392A602BA3}";
248 
249             /// <summary>
250             /// (CSIDL_RECENT) Recent Items folder
251             /// "%APPDATA%\Microsoft\Windows\Recent"
252             /// </summary>
253             internal const string Recent = "{AE50C081-EBD2-438A-8655-8A092E34987A}";
254 
255             /// <summary>
256             /// (CSIDL_BITBUCKET) Recycle Bin virtual folder
257             /// </summary>
258             internal const string RecycleBinFolder = "{B7534046-3ECB-4C18-BE4E-64CD4CB7D6AC}";
259 
260             /// <summary>
261             /// (CSIDL_RESOURCES) Resources fixed folder
262             /// "%windir%\Resources"
263             /// </summary>
264             internal const string ResourceDir = "{8AD10C31-2ADB-4296-A8F7-E4701232C972}";
265 
266             /// <summary>
267             /// (CSIDL_APPDATA) Roaming user application data folder
268             /// "%APPDATA%" ("%USERPROFILE%\AppData\Roaming")
269             /// </summary>
270             internal const string RoamingAppData = "{3EB685DB-65F9-4CF6-A03A-E3EF65729F3D}";
271 
272             /// <summary>
273             /// (CSIDL_SENDTO) SendTo folder
274             /// "%APPDATA%\Microsoft\Windows\SendTo"
275             /// </summary>
276             internal const string SendTo = "{8983036C-27C0-404B-8F08-102D10DCFD74}";
277 
278             /// <summary>
279             /// (CSIDL_STARTMENU) Start Menu folder
280             /// "%APPDATA%\Microsoft\Windows\Start Menu"
281             /// </summary>
282             internal const string StartMenu = "{625B53C3-AB48-4EC1-BA1F-A1EF4146FC19}";
283 
284             /// <summary>
285             /// (CSIDL_STARTUP, CSIDL_ALTSTARTUP) Startup folder
286             /// "%APPDATA%\Microsoft\Windows\Start Menu\Programs\StartUp"
287             /// </summary>
288             internal const string Startup = "{B97D20BB-F46A-4C97-BA10-5E3608430854}";
289 
290             /// <summary>
291             /// (CSIDL_SYSTEM) System32 folder
292             /// "%windir%\system32"
293             /// </summary>
294             internal const string System = "{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}";
295 
296             /// <summary>
297             /// (CSIDL_SYSTEMX86) X86 System32 folder
298             /// "%windir%\system32" or "%windir%\syswow64"
299             /// </summary>
300             internal const string SystemX86 = "{D65231B0-B2F1-4857-A4CE-A8E7C6EA7D27}";
301 
302             /// <summary>
303             /// (CSIDL_TEMPLATES) Templates folder
304             /// "%APPDATA%\Microsoft\Windows\Templates"
305             /// </summary>
306             internal const string Templates = "{A63293E8-664E-48DB-A079-DF759E0509F7}";
307 
308             /// <summary>
309             /// (CSIDL_MYVIDEO) Videos folder
310             /// "%USERPROFILE%\Videos"
311             /// </summary>
312             internal const string Videos = "{18989B1D-99B5-455B-841C-AB7C74E4DDFC}";
313 
314             /// <summary>
315             /// (CSIDL_WINDOWS) Windows folder "%windir%"
316             /// </summary>
317             internal const string Windows = "{F38BF404-1D43-42F2-9305-67DE0B28FC23}";
318         }
319     }
320 }
321