职业coder是经常要修改系统的环境变量的,而我们的机器往往装的程序比较多,环境变量自然也多的不便于修改,比如下图中我机器的path变量,windows自带的实在太难用,于是开发了这么一个小软件,代码量也比较少,使用几年比较稳定,代码拿出来分享一下,省的同猿们重复造轮子,源码及程序下载见博文底部。
关键源码如下:
Environment.cs
using Microsoft.Win32;
using System.Collections.Generic;
using System.Security.AccessControl;
using System.Text;
using System;
namespace Environment
{
public class RegistItem
{
public Type T;
public string SubKey;
public string Name;
public string Value;
}
public abstract class IEnvironmentHelp
{
public string SubKey;
public RegistryKey pregkey = null;
public RegistrySecurity security = null;
public IEnvironmentHelp()
{
}
~IEnvironmentHelp()
{
pregkey.Close();
}
public virtual List<RegistItem> GetItemList()
{
List<RegistItem> ItemList=new List<RegistItem>();
string[] Names = pregkey.GetValueNames();
int count =Names.Length;
for (int i = 0; i < count; i++)
{
RegistItem item=new RegistItem();
item.T = this.GetType();
item.SubKey = this.SubKey;
item.Name=Names[i];
item.Value =pregkey.GetValue(item.Name.ToString()).ToString();
ItemList.Add(item);
}
return ItemList;
}
public virtual void Get(RegistItem item)
{
pregkey.GetValue(item.Name);
}
public virtual void Update(RegistItem item)
{
UnSplit(item);
pregkey.SetValue(item.Name, item.Value);
pregkey.Flush();
}
public virtual void Add(RegistItem item)
{
item.T = this.GetType();
item.SubKey = this.SubKey;
pregkey.SetValue(item.Name, item.Value);
}
public virtual void Delete(RegistItem item)
{
pregkey.DeleteValue(item.Name);
}
public static RegistItem UnSplit(RegistItem item)
{
//item.Value = item.Value.Replace(";\r\n", ";");
return item;
}
public static RegistItem Split(RegistItem item)
{
//if (item.Value.IndexOf("\r\n")==-1)
//{
// return item;
//}
//string[] value;
//value = item.Value.Split(';');
//int count = value.Length;
//StringBuilder sbResult = new StringBuilder();
//for (int i = 0; i < count; i++)
//{
// sbResult.Append(value[i]);
// if (i != 0)
// {
// sbResult.Append(";\r\n");
// }
//}
//item.Value = sbResult.ToString();
return item;
}
}
public class CurrentUser_SubKey : IEnvironmentHelp
{
public CurrentUser_SubKey()
{
SubKey = "Environment";
pregkey = Registry.CurrentUser.OpenSubKey(SubKey, true);
}
}
public class System_SubKey : IEnvironmentHelp
{
public System_SubKey()
{
SubKey = @"SYSTEM\ControlSet001\Control\Session Manager\Environment";
pregkey = Registry.LocalMachine.OpenSubKey(SubKey, true);
}
}
}
更新说明:
2014/4/9
1.增加了变量名修改功能,点击后lable变为编辑模式。
2.考虑软件的美观问题,为软件设置了一个ico图标。
3.加入了驱动调试符号路径的快速设置功能。