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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 原文:[C#]Windows系统特殊文件夹路径获取 由于软件开发的需要,近期对Windows特殊文件夹(如桌面,我的文档等)路径的查找方法进行了研究,结果如下。
原文: [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


以上便是两种常用的系统特殊文件夹的地址获取方式。
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
Linux C# iOS开发
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
32 12
|
1月前
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
72 32
|
1月前
|
存储 负载均衡 Java
如何配置Windows主机MPIO多路径访问存储系统
Windows主机多路径(MPIO)是一种技术,用于在客户端计算机上配置多个路径到存储设备,以提高数据访问的可靠性和性能。本文以Windows2012 R2版本为例介绍如何在客户端主机和存储系统配置多路径访问。
108 13
如何配置Windows主机MPIO多路径访问存储系统
|
1月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
1月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
2月前
|
Windows
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。
|
2月前
|
Apache 数据中心 Windows
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
将网站迁移到阿里云Windows系统云服务器,访问该站点提示连接被拒绝,如何处理?
|
2月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
41 3
|
9天前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
49 12