静态类:System.Environment
说明:Environment类提供有关当前环境和平台的信息以及操作它们的方法。无法继承此类。使用 Environment类可检索信息,如命令行参数、退出代码、环境变量设置、调用堆栈的内容、自上次系统启动以来的时间,以及公共语言运行库的版本等。
属性:
摘要:获取该进程的命令行。
public static string CommandLine { get; }
摘要:获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
public static string CurrentDirectory { get; set; }
摘要:获取或设置进程的退出代码。
public static int ExitCode { get; set; }
摘要:获取一个值,该值指示是否公共语言运行库正在关闭或者当前的应用程序域正在卸载。
public static bool HasShutdownStarted { get; }
摘要:获取此本地计算机的 NetBIOS 名称。
public static string MachineName { get; }
摘要:获取为此环境定义的换行字符串。“rn”用于非 Unix 平台或“n”用于 Unix 平台。
public static string NewLine { get; }
摘要:获取包含当前平台标识符和版本号的 System.OperatingSystem 对象。
public static OperatingSystem OSVersion { get; }
摘要:获取当前计算机上的处理器数。
public static int ProcessorCount { get; }
摘要:获取当前的堆栈跟踪信息。
public static string StackTrace { get; }
摘要:获取系统目录的完全限定路径。
public static string SystemDirectory { get; }
摘要:获取系统启动后经过的毫秒数。
public static int TickCount { get; }
摘要:获取与当前用户关联的网络域名。
public static string UserDomainName { get; }
摘要:获取一个值,用以指示当前进程是否在用户交互模式中运行。
public static bool UserInteractive { get; }
摘要:获取启动当前线程的人的用户名。
public static string UserName { get; }
摘要:获取一个System.Version对象,该对象描述公共语言运行库的主版本、次版本、内部版本和修订号。
public static Version Version { get; }
摘要:获取映射到进程上下文的物理内存量。
public static long WorkingSet { get; }
方法:
摘要:终止此进程并为基础操作系统提供指定的退出代码。
public static void Exit(int exitCode);
摘要:将嵌入到指定字符串中的每个环境变量名称替换为该变量的值的等效字符串,然后返回结果字符串。
public static string ExpandEnvironmentVariabl
摘要:终止进程但不执行任何活动 try-finally 块或终结器。
public static void FailFast(string message);
摘要:返回包含当前进程的命令行参数的字符串数组。
public static string[] GetCommandLineArgs();
摘要:从当前进程检索环境变量的值。
public static string GetEnvironmentVariable(string variable);
摘要:从当前进程或者从当前用户或本地计算机的 Windows 操作系统注册表项检索环境变量的值。
public static string GetEnvironmentVariable(string variable, EnvironmentVariableTarge
摘要:从当前进程检索所有环境变量名及其值。
public static IDictionary GetEnvironmentVariables();
摘要:从当前进程或者从当前用户或本地计算机的 Windows 操作系统注册表项检索所有环境变量名及其值。
public static IDictionary GetEnvironmentVariables(EnvironmentVariableTarge
摘要:获取指向由指定枚举标识的系统特殊文件夹的路径。
public static string GetFolderPath(Environment.SpecialFolder folder);
摘要:返回包含当前计算机中的逻辑驱动器名称的字符串数组。
public static string[] GetLogicalDrives();
摘要:创建、修改或删除当前进程中存储的环境变量。
public static void SetEnvironmentVariable(string variable, string value);
摘要:创建、修改或删除当前进程中或者为当前用户或本地计算机保留的 Windows 操作系统注册表项中存储的环境变量。
public static void SetEnvironmentVariable(string variable, string value, EnvironmentVariableTarge
引文来源 C# 访问与设置Windows环境变量
================================================================================================
参考一: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, @”softwaremicrosoftwindowscurrentversionexplorershell 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
using System; class ForeachApp // 遍历environment中所有键值 |
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_MACHINESYSTEMControlSet001ControlSession ManagerEnvironment]
/// </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);
}
}
}
引用来源:http://www.cnblogs.com/greatverve/archive/2011/05/04/csharp-get-system-param.html