Windows标准文件位置

有人能指点我一个文件,其中列出了窗口中的所有标准文件位置,以及应该和不应该使用它们。 就像是

User Application Data -> %USERDIR%/AppData/Local/%VENDOR%/%APPLICATION% 

等等。

大免责声明

千万不要 使用这些地方的硬路径 。 只能使用提供的API(无论这些API是标准的Win32 API,.NET API等等)来访问它们。 否则,您将冒着打破Windows的不同版本和语言的风险。

这是一个真正的风险 – 他们已经改变了这些地点至少四次 – 这正是我所能想到的! 更不用说漫游配置文件和其他有趣的奇怪,可以突然出现。

现在这个大的免责声明已经排除在外了,列表在哪里呢? 维基百科有它。 采取一些“先出现在”一粒盐, 我90%确定我已经看到其中一些比声称的更早出现。 我对以下内容进行了无耻的剪贴 – 重新格式化:

  • 应用数据
    • 每个用户应用程序特定的文件
    • %USERPROFILE%\Application Data
    • 首先出现在Windows 98中
  • 饼干
    • Internet Explorer浏览器Cookie
    • %USERPROFILE%\Cookies
    • 首先出现在Windows 98中
  • 桌面目录
    • 存储在用户桌面上的文件
    • %USERPROFILE%\Desktop
    • 首先出现在Windows 95中
  • 最爱
    • 用户的收藏夹
    • %USERPROFILE%\Favorites
    • 首先出现在Windows 98中
  • 字体
    • 已安装字体的容器文件夹
    • %windir%\Fonts
    • 首先出现在Windows XP中
  • 历史
    • 用户特定的浏览器历史
    • %USERPROFILE%\Local Settings\History
    • 首先出现在Windows 98中
  • 互联网缓存
    • 用户特定的临时Internet文件
    • %USERPROFILE%\Local Settings\Temporary Internet Files
    • 首先出现在Windows 98中
  • 本地应用程序数据
    • 用户特定的和计算机特定的应用程序设置
    • %USERPROFILE%\Local Settings\Application Data
    • 首先出现在Windows 2000 / ME中
  • 我的文件
    • 用户的文件
    • %USERPROFILE%\My Documents (WinNT line)
    • C:\My Documents (Win98-ME)
    • 首先出现在Windows 98中
  • 我的音乐
    • 用户的音乐
    • %USERPROFILE%\My Documents\My Music
    • 首先出现在Windows XP中
  • 我的照片
    • 用户的照片
    • %USERPROFILE%\My Documents\My Pictures
    • 首先出现在Windows XP中
  • 我的视频
    • 用户的视频文件
    • %USERPROFILE%\My Documents\My Videos
    • 首先出现在Windows XP中
  • 程式
    • 用户特定的“(所有)程序”组和图标
    • %USERPROFILE%\Start Menu\Programs
    • 首先出现在Windows 95中
  • 最近
    • 用户特定的“我最近的文档”
    • %USERPROFILE%\Recent
    • 98
  • 发给
    • 用户特定的“发送到”菜单项
    • %USERPROFILE%\SendTo
    • 首先出现在Windows 98中
  • 开始菜单
    • 用户特定的“开始菜单”项目
    • %USERPROFILE%\Start Menu
    • 首先出现在Windows 98中
  • 系统
    • Windows系统目录
    • %windir%\system32
    • 首先出现在Windows 2000中
  • 保存的游戏
    • 用户保存的游戏
    • %USERPROFILE%\saved games
    • 首先出现在Windows Vista中
  • 模板
    • 用户特定的文档模板
    • %USERPROFILE%\Templates
    • 首先出现在Windows 98中

MSDN上的KnownFolderID是官方列表。

查看SHGetFolderlocation() (XP)或SHGetKnownFolderIDList() (Vista / W7),了解如何正确获取这些文件夹的位置。

大量的信息可以在特殊文件夹的MSDN页面找到: http : //msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx 。 除了约翰的答案,这是有用的信息

切勿使用硬编码的值。 他们的API不仅可以检索它们,还可以有一些环境变量。

例如,Windows XP有这些环境变量:

 ALLUSERSPROFILE=C:\Documents and Settings\All Users APPDATA=C:\Documents and Settings\[username]\Application Data CommonProgramFiles=C:\Program Files\Common Files HOMEDRIVE=C: HOMEPATH=\Documents and Settings\[username] ProgramFiles=C:\Program Files SystemDrive=C: SystemRoot=C:\WINDOWS TEMP=%APPDATA%\Local Settings\Temp TMP=%APPDATA%\Local Settings\Temp USERPROFILE=C:\Documents and Settings\[username] windir=C:\WINDOWS 

Vista增加了一些新的环境变量,如LOCALAPPDATAProgramDataPublic