原文:[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. RDA安装

    解压到/home/oracle下面     $ cp /home/oracle/rda $ perl rda.pl -cv   运行上面的命令,如果最后一行出现下面所示,说明没问题       No ...

  2. Spring boot(三) springboot 定时任务

    这个不多说,springboot 定时任务非常简单就可以实现了. 30s运行一次 , @Scheduled(cron="0,30 * * * * ?") 通过这个控制定时时间 cr ...

  3. shell脚本if条件总结

    原文链接:https://geniuspeng.github.io/2018/03/12/shell-if/ shell编程中,if-then是一种常见的控制流命令,而if的条件判断一般采用内置命令t ...

  4. [Recompose] Add Lifecycle Hooks to a Functional Stateless Component using Recompose

    Learn how to use the 'lifecycle' higher-order component to conveniently use hooks without using a cl ...

  5. Web全栈工程师修养

    全栈工程师现在是个很热的话题,如何定义全栈工程师?在著名的问答网站Quora上有人提出了这个问题,其中一个获得了高票的回答是: 全栈工程师是指,一个能处理数据库.服务器.系统工程和客户端的所有工作的工 ...

  6. php正则表达式函数

    $zz = '/^\d{1,}$/'; //上面的这种方式没问题,还有一种方式经测试也没问题,如下 echo preg_match($zz, "123423423423");//比 ...

  7. 【9201】&&【a201】明明的随机数

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整 ...

  8. 编译nodejs及其源代码研究

    本文将从 源代码 研究nodejs 的原理.本质,探讨nodejs的应用场景,以及高性能开发实践指南. 文件夹: 第一节:编译node.js 第二节:源代码分析 进入主题:下面是在win7 64 下进 ...

  9. [Java][web]利用Spring随时随地获得Request和Session

    利用Spring随时随地获得Request和Session 一.准备工作: 在web.xml中加入 <listener> <listener-class> org.spring ...

  10. 微信开发学习日记(七):开源微商城wemall

    最近嘛,不是在调研PHP和微信的行情么. 发现,微商城是非常火爆的一个领域,既然业务有搞头,那么技术这一块也有很多选择. 网上发现了wemall这个开源的PHP实现的微商城. 下载了开源版本,PHP后 ...