-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Open
Labels
api-needs-workAPI needs work before it is approved, it is NOT ready for implementationAPI needs work before it is approved, it is NOT ready for implementationarea-System.Runtime
Milestone
Description
(Redirecting from (PowerShell/PowerShell#11240))
It should be possible to retrieve the location of all "special folders" instead of hardcoding them (or assuming they are just subfolders of the user's profile folder).
As of today, Environment.GetFolderPath() (which reportedly relies on SHGetKnownFolderPath()) doesn't support all KNOWNFOLDERID's. Here's a few of the ones that are not supported:
FOLDERID_Downloads
FOLDERID_DocumentsLibrary
FOLDERID_CameraRoll
This piece of code
using System;
namespace GetFolderPath
{
class Program
{
static void Main(string[] args)
{
foreach (Environment.SpecialFolder folder in (Environment.SpecialFolder[]) Enum.GetValues(typeof(Environment.SpecialFolder)))
{
Console.WriteLine("{0,-30}{1}", folder, Environment.GetFolderPath(folder));
}
}
}
}
outputs only this subset of folder paths:
Desktop C:\Users\joe\Desktop
Programs C:\Users\joe\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
MyDocuments C:\Users\joe\Documents
MyDocuments C:\Users\joe\Documents
Favorites C:\Users\joe\Favorites
Startup C:\Users\joe\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Recent C:\Users\joe\AppData\Roaming\Microsoft\Windows\Recent
SendTo C:\Users\joe\AppData\Roaming\Microsoft\Windows\SendTo
StartMenu C:\Users\joe\AppData\Roaming\Microsoft\Windows\Start Menu
MyMusic C:\Users\joe\Music
MyVideos C:\Users\joe\Videos
DesktopDirectory C:\Users\joe\Desktop
MyComputer
NetworkShortcuts C:\Users\joe\AppData\Roaming\Microsoft\Windows\Network Shortcuts
Fonts C:\windows\Fonts
Templates C:\Users\joe\AppData\Roaming\Microsoft\Windows\Templates
CommonStartMenu C:\ProgramData\Microsoft\Windows\Start Menu
CommonPrograms C:\ProgramData\Microsoft\Windows\Start Menu\Programs
CommonStartup C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
CommonDesktopDirectory C:\Users\Public\Desktop
ApplicationData C:\Users\joe\AppData\Roaming
PrinterShortcuts
LocalApplicationData C:\Users\joe\AppData\Local
InternetCache C:\Users\joe\AppData\Local\Microsoft\Windows\INetCache
Cookies C:\Users\joe\AppData\Local\Microsoft\Windows\INetCookies
History C:\Users\joe\AppData\Local\Microsoft\Windows\History
CommonApplicationData C:\ProgramData
Windows C:\windows
System C:\windows\system32
ProgramFiles C:\Program Files
MyPictures C:\Users\joe\Pictures
UserProfile C:\Users\joe
SystemX86 C:\windows\SysWOW64
ProgramFilesX86 C:\Program Files (x86)
CommonProgramFiles C:\Program Files\Common Files
CommonProgramFilesX86 C:\Program Files (x86)\Common Files
CommonTemplates C:\ProgramData\Microsoft\Windows\Templates
CommonDocuments C:\Users\Public\Documents
CommonAdminTools C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
AdminTools C:\Users\joe\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
CommonMusic C:\Users\Public\Music
CommonPictures C:\Users\Public\Pictures
CommonVideos C:\Users\Public\Videos
Resources C:\windows\resources
LocalizedResources
CommonOemLinks
CDBurning C:\Users\joe\AppData\Local\Microsoft\Windows\Burn\Burn
MizardX, RayKoopa, claudio-salvio, austinw-fineart, wiz0u and 2 more
Metadata
Metadata
Assignees
Labels
api-needs-workAPI needs work before it is approved, it is NOT ready for implementationAPI needs work before it is approved, it is NOT ready for implementationarea-System.Runtime