原文:[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. POJ 1833 生成排列

    题目链接:POJ 1833 /************************************ * author : Grant Yuan * time : 2014/10/19 16:38 ...

  2. css3-12 transition+css或transform实现过渡动画

    css3-12 transition+css或transform实现过渡动画 一.总结 一句话总结:首先要设置hover后的效果,然后在transition里面指定执行哪些样式和执行时间为多长. 1. ...

  3. 【2186】Popular Cows(强连通分支及其缩点)

    id=2186">[2186]Popular Cows(强联通分支及其缩点) Popular Cows Time Limit: 2000MS   Memory Limit: 65536 ...

  4. 常用有效检测数据库运行状态SQL脚本

    1.查看数据库中不为 InnoDB 引擎的表   SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE   FROM information_schema.TABLES  W ...

  5. js进阶 11-3 jquery中css属性如何操作

    js进阶 11-3  jquery中css属性如何操作 一.总结 一句话总结:通过css()方法 1.attr和css是有交叉的,比如width,两者中都可以设置,那么他们的区别是什么? 其实通俗一点 ...

  6. 一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照

    本文主要介绍String类.StringBuffer类.StringBuilder类的差别  : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作 ...

  7. 机器学习 Softmax classifier (一个隐含层)

    程序实现 softmax classifier, 含有一个隐含层的情况.activation function 是 ReLU : f(x)=max(0,x) f1=w1x+b1 h1=max(0,f1 ...

  8. prettytensor 的使用

    prettytensor 顾名思义,对原始的 tensorflow 下的 tensor 进行封装(prettytensor 以 tensorflow 为基础,二者搭配使用),使其成为一个更为接口友好的 ...

  9. 增删改查 T-SQL最基本操作

    use test --操作test表 go --查询 select * from stu -- 查询stu里的所有数据 select top 3 * from stu -- 查询stu里前三行数据 s ...

  10. [GeekBand] STL vector 查找拷贝操作效率分析

    本文参考文献::GeekBand课堂内容,授课老师:张文杰 :C++ Primer 11 中文版(第五版) :网络资料: 叶卡同学的部落格  http://www.leavesite.com/ htt ...