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

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

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["变量名"];
比如得到计算机名、程序文件夹等
[sourcecode language='c#']
TextBox1.Text = System.Environment.GetEnvironmentVariable(“COMPUTERNAME”) +”rn”;
TextBox1.Text = System.Environment.GetEnvironmentVariable(“ProgramFiles”) +”rn”;
[/sourcecode]

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

[code language='C#']
TextBox1.Text += Environment.GetFolderPath(Environment.SpecialFolder.Personal)+ "rn";//我的文档
TextBox1.Text += Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "rn";//桌面
[/code]
就是用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.dll

namespace 用程序修改环境变量
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        /// <summary>
        /// 读取注册表
        /// path的路径:[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tbnRead_Click(object sender, EventArgs e)
        {
            RegistryKey regLocalMachine = Registry.LocalMachine;
            RegistryKey regSYSTEM = regLocalMachine.OpenSubKey("SYSTEM", true);//打开HKEY_LOCAL_MACHINE下的SYSTEM
            RegistryKey regControlSet001 = regSYSTEM.OpenSubKey("ControlSet001", true);//打开ControlSet001
            RegistryKey regControl = regControlSet001.OpenSubKey("Control", true);//打开Control
            RegistryKey regManager = regControl.OpenSubKey("Session Manager", true);//打开Control

            RegistryKey regEnvironment = regManager.OpenSubKey("Environment", true);//打开MSSQLServer下的MSSQLServer
            this.richTextBox1.Text = regEnvironment.GetValue("path").ToString();//读取path的值
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            Close();
        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        [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下的SYSTEM
            RegistryKey regControlSet001 = regSYSTEM.OpenSubKey("ControlSet001", true);//打开ControlSet001
            RegistryKey regControl = regControlSet001.OpenSubKey("Control", true);//打开Control
            RegistryKey regManager = regControl.OpenSubKey("Session Manager", true);//打开Control

            RegistryKey regEnvironment = regManager.OpenSubKey("Environment", true);//打开MSSQLServer下的MSSQLServer
            regEnvironment.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);

        }
        /// <summary>
        /// 重新启动计算机
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        [DllImport("user32.dll")]
        //主要API是这个,注意:必须声明为static extern
        private static extern int ExitWindowsEx(int x, int y);
        private void button1_Click(object sender, EventArgs e)
        {
            ExitWindowsEx(2,0);
        }
    }
}

 

时间: 2024-10-22 13:28:03

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

如何在java中实现读取一个txt文档中的随机一行

问题描述 如何在java中实现读取一个txt文档中的随机一行 如题,如何在java中实现读取一个txt文档中的随机一行? 主要就是怎么随机读取 解决方案 根据楼上的说法,来总结一下吧,总体来说,就是将文件全部都读取出来,每一行存储到一个数组或集合中,然后再通过产生随机数,来对这个数组或是 集合进行随机的访问.这样一来就解决了 解决方案二: 文本文件只能顺序读,不能随机读.你的需求只能是读取文本文件每一行到一个arraylist,然后得到下标范围,产生一个随机数,取那一行 解决方案三: http:

毕业设计 OFFICE文档在线考试系统 求大神帮助

问题描述 有没大神能代做一份毕业设计课题:OFFICE文档在线考试系统语言C#大致框架就是学生线下用WORD文档考试然后上传至网页通过老师上传的标准答案进行比对找对错价钱好商量详情联系QQ447446755 解决方案 解决方案二:紧急希望能帮助的大神速速与我联系解决方案三:你要的就是如何读取word,都不需要操作解决方案四:对呀,了解下如何读取word就行了解决方案五:如果你要代码的话我觉得你还不如去淘宝找,读word不知道怎么做的话看3楼的比较靠谱

Java使用Apache POI库读取Excel表格文档的示例_java

Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能. 项目下载页:http://poi.apache.org/download.html Apache POI 是创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.用它可以使用Java读取和创建,修改MS Excel文件.而且,还可以使用Jav

asp.net2.0里,怎样读取一个XML文档结果的值?求求各位解说了,文档结构如下给出

问题描述 文档结构为:<?xmlversion="1.0"encoding="utf-8"?><a><aa><aaa><x>x内容</x><y>y内容</y><z>z内容</z></aaa><aaa><x>x内容</x><y>y内容</y><z>z内容</z&

.NET(C#)创建和读取zip压缩文档实例

要对zip文件进行操作,主要用到以下三个类: 1.ZipFile.表示与一个zip文件操作相关的类.可以使用该类创建zip文件,或者打开zip文件. 2.ZipArchive.表示一个zip文档实例,可以通过它直接从流对象创建zip文档.ZipFile类主要是针对磁盘文件来进行操作,而ZipArchive表示的是zip包,不一定是存放在硬盘上的.zip文件,因为它可以基于流来创建,所以可以是存在于内存中,或者用于网络传输的数据. 3.ZipArchiveEntry.文档项实体.表示zip压缩包中

asp 读取 utf-8格式文档并生成utf-8格式文档的乱码问题_应用技巧

今天在对搜索吧的程序进行utf-8修正时,发现生成的utf-8格式文档存在着乱码,原来文件 create_html.asp代码如下:  复制代码 代码如下: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>  <%  set objrs=server.createObject("Scripting.FileSystemObject")  conn=server.mappath("exa

asp 读取 utf-8格式文档并生成utf-8格式文档的乱码问题

今天在对搜索吧的程序进行utf-8修正时,发现生成的utf-8格式文档存在着乱码,原来文件 create_html.asp代码如下: 复制代码 代码如下: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>  <%  set objrs=server.createObject("Scripting.FileSystemObject")  conn=server.mappath("exam

javaScript 读取和设置文档元素的样式属性_javascript技巧

首先我们先说一下样式表属性 1. 内联样式即元素style属性里面设置的,级别最高 2. 页面样式表定义即页面<style></style>里面定义的,级别次之 3.外部链接样式表文件 JavaScript获取和设置文档元素的css属性: 1.获取元素Style属性里面设置的样式属性, document.getElementById(id).style.height; 有,则返回属性值:没有则返回空 IE和火狐皆然,只是有的属性值返回可能不一样,比如像颜色火狐返回rgb,而IE是返

js读取本地excel文档数据的代码_javascript技巧

复制代码 代码如下: <script> function readThis(){ var tempStr = ""; var filePath= document.all.upfile.value; var oXL = new ActiveXObject("Excel.application"); var oWB = oXL.Workbooks.open(filePath); oWB.worksheets(1).select(); var oSheet