private System.Windows.Forms.ImageList imageList1;
private System.Windows.Forms.TreeView tVRegistryKey;
//
// imageList1
//
this.imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
this.imageList1.ImageSize = new System.Drawing.Size(16, 16);
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
private RegistryKey GetKeyByNode(TreeNode node)
{
string path=node.FullPath;
RegistryKey rk=Registry.LocalMachine;
//不是根节点(我的电脑)
if (path.Length>4)
{
string[] tokens = path.Split(new Char[]{'\\'});
//判断node代表的注册键属于哪一个根键
switch (tokens[1])
{
case "HKEY_CLASSES_ROOT" :
rk=Registry.ClassesRoot;
break;
case "HKEY_CURRENT_USER" :
rk=Registry.CurrentUser;
break;
case "HKEY_LOCAL_MACHINE" :
rk=Registry.LocalMachine;
break;
case "HKEY_USERS" :
rk=Registry.Users;
break;
case "HKEY_CURRENT_CONFIG" :
rk=Registry.CurrentConfig;
break;
default:
break;
}
//去掉前头的“我的电脑”
path=path.Substring(6);
//如果不是根键,找出路径,取得注册键对象
if (path.IndexOf("\\")>0)
{
path=path.Substring(path.IndexOf("\\")+1);
try
{
rk=rk.OpenSubKey(path);
}
catch(Exception e)
{
//MessageBox.Show(e.Message);
}
}
}
return rk;
}
private void AddSubRegistryKey(TreeNode node)
{
if (node.Nodes.Count==0)
{
//取得节点所代表的键
RegistryKey rk=GetKeyByNode(node);
//取得此键所有子键的名字
string[] subkeys=rk.GetSubKeyNames();
//所有子键名加入TreeView
for (int i=0;i<subkeys.Length;i++)
{
node.Nodes.Add(subkeys[i]);
}
}
}
private void tVRegistryKey_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if (tVRegistryKey.SelectedNode.Text=="我的电脑")
{
for (int i=0;i<tVRegistryKey.SelectedNode.Nodes.Count;i++)
{
try
{
AddSubRegistryKey(tVRegistryKey.SelectedNode.Nodes[i]);
}
catch (Exception ee)
{
//MessageBox.Show(ee.Message);
}
}
}
lVRegistryValue.Items.Clear();
//取得节点所代表的键
RegistryKey rk=GetKeyByNode(tVRegistryKey.SelectedNode);
string[] Values=rk.GetValueNames();
string ValueName;
object ValueType,ValueData;
for (int i=0;i<Values.Length;i++)
{
ValueName=Values[i];
ValueData=rk.GetValue(ValueName);
ValueType=ValueData.GetType();
ListViewItem lvi;
if (ValueType.ToString()=="System.String")
{
ValueType="REG_SZ";
lvi=new ListViewItem(new String[]{ValueName,ValueType.ToString(),ValueData.ToString()},3);
}
else
{
ValueType="REG_DWORD";
lvi=new ListViewItem(new String[]{ValueName,ValueType.ToString(),ValueData.ToString()},4);
}
lVRegistryValue.Items.Add(lvi);
}
}
private void tVRegistryKey_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
for (int i=0;i<tVRegistryKey.SelectedNode.Nodes.Count;i++)
{
try
{
AddSubRegistryKey(e.Node.Nodes[i]);
}
catch (Exception ee)
{
//MessageBox.Show(ee.Message);
}
}
}
private void AddRoot()
{
for (int i=0;i<tVRegistryKey.TopNode.Nodes.Count;i++)
{
try
{
AddSubRegistryKey(tVRegistryKey.TopNode.Nodes[i]);
}
catch (Exception ee)
{
//MessageBox.Show(ee.Message);
}
}
}