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);
}
}
}
请发表评论