C# 注册表

 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);
				}
			}
		}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值