原文:[C#]Windows系统特殊文件夹路径获取

由于软件开发的需要,近期对Windows特殊文件夹(如桌面,我的文档等)路径的查找方法进行了研究,结果如下。

获取特殊文件夹的方法不止一种,下面列出常用的几个方式。

一、使用 Environment.SpecialFolder 与 Enviroment.GetFolderPath()


简单直接的获取办法,能够获取系统自带的特殊文件夹的路径,而用户在环境变量中定义的路径(如配置Java添加的ClassPath等)不能查找。

这里举例说明如何使用这种方式:

string dir = Enviroment.GetFolderPath(Enviroment.SpecialFolder.Desktop);

这段代码执行后,dir的值就会变为本地系统的桌面文件夹路径。

下面这段代码枚举出了所有可以被这种方法获取的特殊文件夹及其路径:

foreach (Environment.SpecialFolder s in Enum.GetValues(typeof(Environment.SpecialFolder)))

{

      Console.WriteLine("{0} folder = {1}", s, Environment.GetFolderPath(s));

}

在个人计算机中(64位 Windows10系统)运行结果如下:

Desktop folder = C:\Users\CYM\Desktop

Programs folder = C:\Users\CYM\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

MyDocuments folder = C:\Users\CYM\Documents

MyDocuments folder = C:\Users\CYM\Documents

Favorites folder = C:\Users\CYM\Favorites

Startup folder = C:\Users\CYM\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

Recent folder = C:\Users\CYM\AppData\Roaming\Microsoft\Windows\Recent

SendTo folder = C:\Users\CYM\AppData\Roaming\Microsoft\Windows\SendTo

StartMenu folder = C:\Users\CYM\AppData\Roaming\Microsoft\Windows\Start Menu

MyMusic folder = C:\Users\CYM\Music

MyVideos folder = C:\Users\CYM\Videos

DesktopDirectory folder = C:\Users\CYM\Desktop

MyComputer folder =

NetworkShortcuts folder = C:\Users\CYM\AppData\Roaming\Microsoft\Windows\Network Shortcuts

Fonts folder = C:\Windows\Fonts

Templates folder = C:\Users\CYM\AppData\Roaming\Microsoft\Windows\Templates

CommonStartMenu folder = C:\ProgramData\Microsoft\Windows\Start Menu

CommonPrograms folder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs

CommonStartup folder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

CommonDesktopDirectory folder = C:\Users\Public\Desktop

ApplicationData folder = C:\Users\CYM\AppData\Roaming

PrinterShortcuts folder = C:\Users\CYM\AppData\Roaming\Microsoft\Windows\Printer Shortcuts

LocalApplicationData folder = C:\Users\CYM\AppData\Local

InternetCache folder = C:\Users\CYM\AppData\Local\Microsoft\Windows\INetCache

Cookies folder = C:\Users\CYM\AppData\Local\Microsoft\Windows\INetCookies

History folder = C:\Users\CYM\AppData\Local\Microsoft\Windows\History

CommonApplicationData folder = C:\ProgramData

Windows folder = C:\Windows

System folder = C:\Windows\system32

ProgramFiles folder = C:\Program Files (x86)

MyPictures folder = C:\Users\CYM\Pictures

UserProfile folder = C:\Users\CYM

SystemX86 folder = C:\Windows\SysWOW64

ProgramFilesX86 folder = C:\Program Files (x86)

CommonProgramFiles folder = C:\Program Files (x86)\Common Files

CommonProgramFilesX86 folder = C:\Program Files (x86)\Common Files

CommonTemplates folder = C:\ProgramData\Microsoft\Windows\Templates

CommonDocuments folder = C:\Users\Public\Documents

CommonAdminTools folder = C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools

AdminTools folder = C:\Users\CYM\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools

CommonMusic folder = C:\Users\Public\Music

CommonPictures folder = C:\Users\Public\Pictures

CommonVideos folder = C:\Users\Public\Videos

Resources folder = C:\Windows\resources

LocalizedResources folder =

CommonOemLinks folder =

CDBurning folder = C:\Users\CYM\AppData\Local\Microsoft\Windows\Burn\Burn

二、使用Enviroment.GetEnvironmentVariable


可以看到这里使用了获取环境变量的功能,所以可以通过这个方式获取环境变量的值,这里也就是指环境变量中存储的文件夹地址。


这里举例说明如何使用这种方式:


string dir = Enviroment.GetEnviromentVariable("Java_Home");

这行代码执行之后,dir的值将变为环境变量“Java_Home”存储的值,即Java的安装路径。

下面的代码将枚举本地系统所有可以获取的值:

foreach (DictionaryEntry de in Environment.GetEnvironmentVariables())

{

      Console.WriteLine("  {0} value = {1}", de.Key, de.Value);

}

在本地系统(64位 Windows10)上运行结果如下:

PROCESSOR_ARCHITEW6432 value = AMD64

COMPUTERNAME value = DESKTOP-MKB01RR

CommonProgramFiles(x86) value = C:\Program Files (x86)\Common Files

HOMEPATH value = \Users\CYM

VisualStudioEdition value = Microsoft Visual Studio Community 2015

TMP value = C:\Users\CYM\AppData\Local\Temp

PROCESSOR_REVISION value = 3a09

PATHEXT value = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

PkgDefApplicationConfigFile value = C:\Users\CYM\AppData\Local\Microsoft\VisualStudio\14.0\devenv.exe.config

USERDOMAIN_ROAMINGPROFILE value = DESKTOP-MKB01RR

TEMP value = C:\Users\CYM\AppData\Local\Temp

LOCALAPPDATA value = C:\Users\CYM\AppData\Local

PUBLIC value = C:\Users\Public USERDOMAIN value = DESKTOP-MKB01RR

ProgramFiles(x86) value = C:\Program Files (x86)

Path value = C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;D:\Program Files\Java\jre1.8.0_51\bin;D:\Program Files\Java\jre1.8.0_51\jre\bin;C:\Windows\system32\config\systemprofile\.dnx\bin;C:\Program
Files\Microsoft DNX\Dnvm\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\Doctrine
extensions for PHP\

PROCESSOR_LEVEL value = 6

PROCESSOR_IDENTIFIER value = Intel64 Family 6 Model 58 Stepping 9, GenuineIntel

PSModulePath value = C:\Windows\system32\WindowsPowerShell\v1.0\Modules\

NUMBER_OF_PROCESSORS value = 8

FPS_BROWSER_USER_PROFILE_STRING value = Default

CommonProgramFiles value = C:\Program Files (x86)\Common Files

ClassPath value = .;D:\Program Files\Java\jre1.8.0_51\bin;D:\Program Files\Java\jre1.8.0_51\lib\dt.jar;D:\Program Files\Java\jre1.8.0_51\lib\tools.jar

VisualStudioDir value = C:\Users\CYM\Documents\Visual Studio 2015

ProgramData value = C:\ProgramData

ProgramW6432 value = C:\Program Files

ProgramFiles value = C:\Program Files (x86)

ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO value = 1

Java_Home value = D:\Program Files\Java\jre1.8.0_51

SystemRoot value = C:\Windows

SESSIONNAME value = Console

VisualStudioVersion value = 14.0

CommonProgramW6432 value = C:\Program Files\Common Files

LOGONSERVER value = \\MicrosoftAccount

USERPROFILE value = C:\Users\CYM

MSBuildLoadMicrosoftTargetsReadOnly value = true

VS140COMNTOOLS value = D:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\

VSLANG value = 2052

APPDATA value = C:\Users\CYM\AppData\Roaming HOMEDRIVE value = C:

USERNAME value = CYM

FPS_BROWSER_APP_PROFILE_STRING value = Internet Explorer

PROCESSOR_ARCHITECTURE value = x86

OS value = Windows_NT

ComSpec value = C:\Windows\system32\cmd.exe

SystemDrive value = C:

windir value = C:\Windows

ALLUSERSPROFILE value = C:\ProgramData


以上便是两种常用的系统特殊文件夹的地址获取方式。

[C#]Windows系统特殊文件夹路径获取的更多相关文章

  1. C# - 获取windows系统特殊文件夹路径

    一.路径分类 1.绝对路径 完整路径,从磁盘符号开始,如:C:\Windows 2.相对路径 以当前路径为起点,不包含磁盘符号,通常使用“..\”符号来访问上级目录中的文件或文件夹. ../Windo ...

  2. 【.Net】C#获取Windows系统特殊文件夹的路径

    系统特殊文件夹是包含公共信息的文件夹,如“Program Files”.“Programs”.“System”或“Startup”.特殊文件夹在默认情况下由系统设置,或者由用户在安装 Windows ...

  3. 关于Linux系统和Windows系统中文件夹的命名规范

    Windows系统中. 1.在创建文件夹的时候不能以"."开头(但是文件以多个点开头并且还有其他合法字符的话就是合法的) 但是在windows系统中确实见过以一个点".& ...

  4. 使用VM Tools让VMware虚拟机里的ubuntu能够共享Windows系统的文件夹

    我们经常有这样的使用场景,在宿主机Windows(Linux)操作系统上通过VMware软件安装了一个Linux(Windows)的虚拟机, 然后需要在两种操作系统中通过某种介质共享数据. 一种比较麻 ...

  5. VC 获取指定文件夹路径的方法小结

    VC获取指定文件夹路径 flyfish  2010-3-5 一 使用Shell函数 1 获取应用程序的安装路径 TCHAR buf[_MAX_PATH];SHGetSpecialFolderPath( ...

  6. java 弹出选择目录框(选择文件夹),获取选择的文件夹路径

    java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...

  7. python 获取当前文件夹路径及父级目录的几种方法

    获取当前文件夹路径及父级目录: import os current_dir = os.path.abspath(os.path.dirname(__file__)) print(current_dir ...

  8. Delphi获取文件名、不带扩展名文件名、文件所在路径、上级文件夹路径的方法

    1.获取不带扩展名的文件名方法,利用ChangeFileExt函数修改传入参数的扩展为空,并不会对文件本身产生变更. ChangeFileExt(ExtractFileName('D:\KK\Test ...

  9. MFC获取文件路径和文件夹路径

    MFC的界面中,需要实现这样两个功能: 1.在界面上加一个按钮,单击按钮弹出一个对话框选择文件,在工程中获得文件的路径: 2.在界面上加一个按钮,单击按钮弹出一个对话框选择文件夹,在工程中获取文件夹的 ...

随机推荐

  1. 等价变换(equivalent transformation)

    1. 加加减减 (x−b)n=(x−a+a−b)n=∑i=0n(ni)(x−a)i(a−b)n−i

  2. 【例题5-2 UVA - 101】The Blocks Problem

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 用vector模拟就好. resize的时候,只是把多余的清理掉. 原先的不会变的. [错的次数] 在这里输入错的次数 [反思] 在 ...

  3. [TypeStyle] Compose CSS classes using TypeStyle

    We will demonstrate composing classes using the utility classes function. classes is also what we re ...

  4. js进阶 12-2 彻底弄懂JS的事件冒泡和事件捕获

    js进阶 12-2 彻底弄懂JS的事件冒泡和事件捕获 一.总结 一句话总结:他们是描述事件触发时序问题的术语.事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件.相反的,事件 ...

  5. 【边做项目边学Android】手机安全卫士05_2:程序主界面,为每一个条目加入事件

    为每一个条目加入点击事件监听器 gv_main.setOnItemClickListener(this); 须要当前Activity实现OnItemClickListener接口.同一时候实现publ ...

  6. [Angular] Test Container component with async provider

    The main idea for testing contianer component is to make sure it setup everythings correctlly. Call ...

  7. iOS开发ARC与MRC下单例的完整写法与通用宏定义

    #import "XMGTool.h" /** * 1:ARC下的完整的单例写法:alloc内部会调用+(instancetype)allocWithZone:(struct _N ...

  8. mysql 悲观锁 的运用

    悲观锁: 它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,往往依靠数据库提供的锁机制(也只有数 ...

  9. ASCII,Unicode和UTF-8终于找到一个能完全搞清楚的文章了

    前言 平时喜欢写东西,看博客,一直对编码有些懵,今天下午也不知道看到了什么,突然想了解下,就找到了这个文章,看完真的豁然开朗,这个必须留下来做纪念. 点击打开链接 1.ASCII 我们知道,计算机内部 ...

  10. 逐步把Nginx及Redis引入项目组之负载均衡技术调研初版总结

    本篇以一个Nginx服务.两个Tomcat服务.一个Redis搭建一个负载均衡环境,由于就一台电脑暂以随机分配client请求策略开展,详细工作中推荐以IP地址来实现client请求的动态负载策略.省 ...