热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

转:C#读取“我的文档”等特殊系统路径及环境变量

返回“我的文档”路径字符串Environment.GetFolderPath(Environment.SpecialFolder.Personal)本技巧使用GetFolderPa

返回“我的文档”路径字符串

Environment.GetFolderPath(Environment.SpecialFolder.Personal)

本技巧使用GetFolderPath方法来获取指向由指定枚举标识的系统特殊文件夹的路径。语法格式如下:

public static string GetFolderPath (SpecialFolder folder)

参数folder标识系统特殊文件夹的枚举常数。

   如果指定系统的特殊文件夹存在于用户的计算机上,则返回到该文件夹的路径;否则为空字符串(" ")。如果系统未创建文件夹、已删除现有文件夹或者文件夹是不对应物理路径的虚拟目录(例如“我的电脑”),则该文件夹不会实际存在。

主要代码如下:

MessageBox.Show("我的文档系统路径:" + Environment.GetFolderPath(Environment.SpecialFolder.Personal), "我的文档",MessageBoxButtons.OK,MessageBoxIcon.Information);

参考一:C# 如何获取某用户的“我的文档”的目录

Console.WriteLine(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));

System.Environment.GetFolderPath 方法
获取指向由指定枚举标识的系统特殊文件夹的路径。

public static string GetFolderPath(
Environment.SpecialFolder folder
)

 

Environment.SpecialFolder 枚举说明:
成员名称 说明
ApplicationData 目录,它用作当前漫游用户的应用程序特定数据的公共储存库。
CommonApplicationData 目录,它用作所有用户使用的应用程序特定数据的公共储存库。
LocalApplicationData 目录,它用作当前非漫游用户使用的应用程序特定数据的公共储存库。
COOKIEs 用作 Internet COOKIE 的公共储存库的目录。
Desktop 逻辑桌面,而不是物理文件系统位置。
Favorites 用作用户收藏夹项的公共储存库的目录。
History 用作 Internet 历史记录项的公共储存库的目录。
InternetCache 用作 Internet 临时文件的公共储存库的目录。
Programs 包含用户程序组的目录。
MyComputer “我的电脑”文件夹。 
MyMusic “My Music”文件夹。
MyPictures “My Pictures”文件夹。
Recent 包含用户最近使用过的文档的目录。
SendTo 包含“发送”菜单项的目录。
StartMenu 包含“开始”菜单项的目录。
Startup 对应于用户的“启动”程序组的目录。
System “System”目录。
Templates 用作文档模板的公共储存库的目录。
DesktopDirectory 用于物理上存储桌面上的文件对象的目录。
Personal 用作文档的公共储存库的目录。
MyDocuments “我的电脑”文件夹。
ProgramFiles “Program files”目录。
CommonProgramFiles 用于应用程序间共享的组件的目录。


参考二:C#打开桌面等特殊系统路径

不同的操作系统,桌面的路径不尽相同,而且随着用户安装位置的不同也不同。
C#可以从Windows注册表读取得到用户的特殊文件夹(桌面、收藏夹等等)的位置。
代码如下:

using Microsoft.Win32;
namespace JPGCompact
{
public partial class MainForm : Form{private void Test(){RegistryKey folders;folders = OpenRegistryPath(Registry.CurrentUser, @"\software\microsoft\windows\currentversion\explorer\shell folders");// Windows用户桌面路径string desktopPath = folders.GetValue("Desktop").ToString();// Windows用户字体目录路径string fontsPath = folders.GetValue("Fonts").ToString();// Windows用户网络邻居路径string nethoodPath = folders.GetValue("Nethood").ToString();// Windows用户我的文档路径string personalPath = folders.GetValue("Personal").ToString();// Windows用户开始菜单程序路径string programsPath = folders.GetValue("Programs").ToString();// Windows用户存放用户最近访问文档快捷方式的目录路径string recentPath = folders.GetValue("Recent").ToString();// Windows用户发送到目录路径string sendtoPath = folders.GetValue("Sendto").ToString();// Windows用户开始菜单目录路径string startmenuPath = folders.GetValue("Startmenu").ToString();// Windows用户开始菜单启动项目录路径string startupPath = folders.GetValue("Startup").ToString();// Windows用户收藏夹目录路径string favoritesPath = folders.GetValue("Favorites").ToString();// Windows用户网页历史目录路径string historyPath = folders.GetValue("History").ToString();// Windows用户COOKIEs目录路径string COOKIEsPath = folders.GetValue("COOKIEs").ToString();// Windows用户Cache目录路径string cachePath = folders.GetValue("Cache").ToString();// Windows用户应用程式数据目录路径string appdataPath = folders.GetValue("Appdata").ToString();// Windows用户打印目录路径string printhoodPath = folders.GetValue("Printhood").ToString();}private RegistryKey OpenRegistryPath(RegistryKey root, string s){s = s.Remove(0, 1) + @"\";while (s.IndexOf(@"\") != -1){root = root.OpenSubKey(s.Substring(0, s.IndexOf(@"\")));s = s.Remove(0, s.IndexOf(@"\") + 1);}return root;}}

c#中读取系统的环境变量、我的文档路径、桌面路径等

1
直接System.Environment.GetEnvironmentVariable["变量名"];
比如得到计算机名、程序文件夹等

TextBox1.Text = System.Environment.GetEnvironmentVariable(“COMPUTERNAME”) +”rn”;
TextBox1.Text
= System.Environment.GetEnvironmentVariable(“ProgramFiles”) +”rn”;

 至于像“桌面”“我的文档”可以这么得到

TextBox1.Text += Environment.GetFolderPath(Environment.SpecialFolder.Personal)+ "rn";//我的文档
TextBox1.Text += Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "rn";//桌面

就是用Environment.GetFolderPath(Environment.SpecialFolder.特殊文件夹)
像COOKIEs、音乐、视频、发送到等等都可以这样获得路径

2

C#读取系统的环境变量

using System;
using System.Collections;class ForeachApp
{
public static void Main(){// 把环境变量中所有的值取出来,放到变量environment中IDictionary environment = Environment.GetEnvironmentVariables();// 打印表头Console.WriteLine("环境变量名\t=\t环境变量值");// 遍历environment中所有键值foreach (string environmentKey in environment.Keys){// 打印出所有环境变量的名称和值Console.WriteLine("{0}\t=\t{1}", environmentKey, environment[environmentKey].ToString());}}
}

3

C#读取设置path环境变量并重启计算机

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;//注册表操作要引用的空间
using System.Runtime.InteropServices;//调用API函数需要的引用,来加载非托管类user32.dllnamespace 用程序修改环境变量
{
public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}///

/// 读取注册表/// path的路径:[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]/// /// /// private void tbnRead_Click(object sender, EventArgs e){RegistryKey regLocalMachine = Registry.LocalMachine;RegistryKey regSYSTEM = regLocalMachine.OpenSubKey("SYSTEM", true);//打开HKEY_LOCAL_MACHINE下的SYSTEMRegistryKey regControlSet001 = regSYSTEM.OpenSubKey("ControlSet001", true);//打开ControlSet001RegistryKey regControl = regControlSet001.OpenSubKey("Control", true);//打开ControlRegistryKey regManager = regControl.OpenSubKey("Session Manager", true);//打开Control
RegistryKey regEnvironment = regManager.OpenSubKey("Environment", true);//打开MSSQLServer下的MSSQLServerthis.richTextBox1.Text = regEnvironment.GetValue("path").ToString();//读取path的值
}private void btnClose_Click(object sender, EventArgs e){Close();}/// ////// /// /// [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]//SendMessageTimeout是在user32.dll中定义的public static extern IntPtr SendMessageTimeout(IntPtr windowHandle,uint Msg,IntPtr wParam,IntPtr lParam,SendMessageTimeoutFlags flags,uint timeout,out IntPtr result);[Flags]public enum SendMessageTimeoutFlags : uint{SMTO_NORMAL = 0x0000,SMTO_BLOCK = 0x0001,SMTO_ABORTIFHUNG = 0x0002,SMTO_NOTIMEOUTIFNOTHUNG = 0x0008}private void btnWrite_Click(object sender, EventArgs e){RegistryKey regLocalMachine = Registry.LocalMachine;RegistryKey regSYSTEM = regLocalMachine.OpenSubKey("SYSTEM", true);//打开HKEY_LOCAL_MACHINE下的SYSTEMRegistryKey regControlSet001 = regSYSTEM.OpenSubKey("ControlSet001", true);//打开ControlSet001RegistryKey regControl = regControlSet001.OpenSubKey("Control", true);//打开ControlRegistryKey regManager = regControl.OpenSubKey("Session Manager", true);//打开Control
RegistryKey regEnvironment = regManager.OpenSubKey("Environment", true);//打开MSSQLServer下的MSSQLServerregEnvironment.SetValue("path", this.richTextBox1.Text);//读取path的值
MessageBox.Show("修改成功");//下面利用发送系统消息,就不要重新启动计算机了const int HWND_BROADCAST=0xffff;// DWORD dwMsgResult = 0L;const uint WM_SETTINGCHANGE = 0;const long SMTO_ABORTIFHUNG = 0x2;System.UInt32 dwMsgResult1=0;long s;// SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (string)"Environment", SMTO_ABORTIFHUNG, 5000,(long)s);
}/// /// 重新启动计算机/// /// /// /// [DllImport("user32.dll")]//主要API是这个,注意:必须声明为static externprivate static extern int ExitWindowsEx(int x, int y);private void button1_Click(object sender, EventArgs e){ExitWindowsEx(2,0);}}
}

原文地址:http://www.cnblogs.com/greatverve/archive/2011/05/04/csharp-get-system-param.html



推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
author-avatar
心在天堂590120_993_292
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有