UserFoldersHelper.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.InteropServices;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace Optimizer
  8. {
  9. internal static class KnownFolders
  10. {
  11. private static readonly Dictionary<KnownFolder, Guid> _guids = new Dictionary<KnownFolder, Guid>
  12. {
  13. [KnownFolder.Contacts] = new Guid("56784854-C6CB-462B-8169-88E350ACB882"),
  14. [KnownFolder.Downloads] = new Guid("374DE290-123F-4565-9164-39C4925E467B"),
  15. [KnownFolder.Favorites] = new Guid("1777F761-68AD-4D8A-87BD-30B759FA33DD"),
  16. [KnownFolder.Links] = new Guid("BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968"),
  17. [KnownFolder.SavedGames] = new Guid("4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4"),
  18. [KnownFolder.SavedSearches] = new Guid("7D1D3A04-DEBB-4115-95CF-2F29DA2920DA")
  19. };
  20. internal static string GetPath(KnownFolder knownFolder)
  21. {
  22. return SHGetKnownFolderPath(_guids[knownFolder], 0);
  23. }
  24. [DllImport("shell32",
  25. CharSet = CharSet.Unicode, ExactSpelling = true, PreserveSig = false)]
  26. private static extern string SHGetKnownFolderPath(
  27. [MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags,
  28. uint hToken = 0);
  29. }
  30. }