OldHawk

菜地一块,欢迎拍砖
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.NET操作注册表的封装类

Posted on 2007-04-30 12:26  OldHawk  阅读(823)  评论(0编辑  收藏  举报
      我写的一个在.NET下操作注册表的类。

using System;
using Microsoft.Win32;
using System.Collections;

namespace iUNS
{
    
/// <summary>
    
/// Class1 的摘要说明。
    
/// </summary>
    public class iuRegistryKey
    {
        
public iuRegistryKey()
        {
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
        }

        
/// <summary>
        
/// 向注册表写入字符串值,并对其进行base64加密
        
/// </summary>
        
/// <param name="subkey">子键</param>
        
/// <param name="key">键名</param>
        
/// <param name="val">键值</param>
        
/// <returns>返回是否成功bool值</returns>
        public static bool setStringValueKeyToEncodingBase64(string subkey,string key,string val)
        {
            
try
            {
                RegistryKey rk
=Registry.LocalMachine.OpenSubKey(subkey,true);
                
if(rk==null)
                {
                    rk
=Registry.LocalMachine.CreateSubKey(subkey);
                    
if(rk==null)
                    {
                        
return false;
                    }
                }
                
byte[] buff=System.Text.Encoding.GetEncoding("gb2312").GetBytes(val);
                val
=Convert.ToBase64String(buff,0,buff.Length);    
                rk.SetValue(key,val);
                rk.Close();
                
return true;
            }
            
catch
            {
                
return false;
            }
        }

        
/// <summary>
        
/// 向注册表写入字符串值,并对其进行base64加密
        
/// </summary>
        
/// <param name="subkey">子键</param>
        
/// <param name="key">键名</param>
        
/// <param name="val">键值</param>
        
/// <returns>返回是否成功bool值</returns>
        public static bool setStringValueKeyToEncodingMD5(string subkey,string key,string val)
        {
            
try
            {
                RegistryKey rk
=Registry.LocalMachine.OpenSubKey(subkey,true);
                
if(rk==null)
                {
                    rk
=Registry.LocalMachine.CreateSubKey(subkey);
                    
if(rk==null)
                    {
                        
return false;
                    }
                }
                val
=md5.stringToMD5.makeMD5(val);    
                rk.SetValue(key,val);
                rk.Close();
                
return true;
            }
            
catch
            {
                
return false;
            }
        }

        
/// <summary>
        
/// 向注册表写入字符串值,不进行base64加密
        
/// </summary>
        
/// <param name="subkey">子键</param>
        
/// <param name="key">键名</param>
        
/// <param name="val">键值</param>
        
/// <returns>返回是否成功bool值</returns>
        public static bool setStringValueKey(string subkey,string key,string val)
        {
            
try
            {
                RegistryKey rk
=Registry.LocalMachine.OpenSubKey(subkey,true);
                
if(rk==null)
                {
                    rk
=Registry.LocalMachine.CreateSubKey(subkey);
                    
if(rk==null)
                    {
                        
return false;
                    }
                }
                rk.SetValue(key,val);
                rk.Close();
                
return true;
            }
            
catch
            {
                
return false;
            }
        }

        
/// <summary>
        
/// 向注册表写入整型值
        
/// </summary>
        
/// <param name="subkey">子键</param>
        
/// <param name="key">键名</param>
        
/// <param name="val">键值</param>
        
/// <returns>返回是否成功bool值</returns>
        public static bool setIntValueKey(string subkey,string key,int val)
        {
            
try
            {
                RegistryKey rk
=Registry.LocalMachine.OpenSubKey(subkey,true);
                
if(rk==null)
                {
                    rk
=Registry.LocalMachine.CreateSubKey(subkey);
                    
if(rk==null)
                    {
                        
return false;
                    }
                }
                rk.SetValue(key,val);
                rk.Close();
                
return true;
            }
            
catch
            {
                
return false;
            }
        }

        
/// <summary>
        
/// 从注册表读取字串值,并对值进行base64解密返回
        
/// </summary>
        
/// </summary>
        
/// <param name="subkey">子键</param>
        
/// <param name="key">键名</param>
        
/// <param name="val">返回取得的字串值</param>
        
/// <returns>返回是否成功bool值</returns>
        public static bool getStringValueKeyFromEncodingBase64(string subkey,string key,ref string val,string def)
        {
            
try
            {
                RegistryKey rk
=Registry.LocalMachine.OpenSubKey(subkey,true);
                
if(rk!=null)
                {
                    val
=(string)rk.GetValue(key,"");
                    
byte[] buff=Convert.FromBase64String(val);
                    val
=System.Text.Encoding.GetEncoding("gb2312").GetString(buff, 0, buff.Length);
                    
if(val=="")
                        val
=def;
                    rk.Close();
                    
return true;
                }
                
else
                {
                    
return false;
                }
            }
            
catch
            {
                
return false;
            }
        }

        
/// <summary>
        
/// 从注册表读取未经加密的字串值
        
/// </summary>
        
/// <param name="subkey">字键</param>
        
/// <param name="key">键名</param>
        
/// <param name="val">返回的字串值</param>
        
/// <returns>返回是否成功bool值</returns>
        public static bool getStringValueKey(string subkey,string key,ref string val,string def)
        {
            
try
            {
                RegistryKey rk
=Registry.LocalMachine.OpenSubKey(subkey,true);
                
if(rk!=null)
                {
                    val
=(string)rk.GetValue(key,"");
                    
if(val=="")
                        val
=def;
                    rk.Close();
                    
return true;
                }
                
else
                {
                    
return false;
                }
            }
            
catch
            {
                
return false;
            }
        }

        
/// <summary>
        
/// 从注册表读取整型值
        
/// </summary>
        
/// <param name="subkey">子键</param>
        
/// <param name="key">键名</param>
        
/// <param name="val">返回取得的整型值,默认值为0</param>
        
/// <returns>返回是否成功bool值</returns>
        public static bool getIntValueKey(string subkey,string key,ref int val,int def)
        {
            
try
            {
                RegistryKey rk
=Registry.LocalMachine.OpenSubKey(subkey,true);
                
if(rk!=null)
                {
                    val
=(int)rk.GetValue(key,-1);
                    
if(val==-1)
                        val
=def;
                    rk.Close();
                    
return true;
                }
                
else
                {
                    
return false;
                }
            }
            
catch
            {
                
return false;
            }
        }

        
/// <summary>
        
/// 取得一个注册表子键下所有键名的数组
        
/// </summary>
        
/// <param name="subkey">子键</param>
        
/// <param name="valList">存放返回的数组</param>
        
/// <returns>返回是否成功bool值</returns>
        public static bool getSubKeyValueNames(string subkey,ref ArrayList valList)
        {
            
try
            {
                RegistryKey rk
=Registry.LocalMachine.OpenSubKey(subkey,true);
                
if(rk!=null)
                {
                    
string[] val=rk.GetValueNames();
                    
for(int i=0;i<val.Length;i++)
                    {
                        valList.Add(val[i]);
                    }
                    rk.Close();
                    
return true;
                }
                
else
                {
                    
return false;
                }
            }
            
catch
            {
                
return false;
            }
        }

        
/// <summary>
        
/// 删除一个指定的键
        
/// </summary>
        
/// <param name="subkey">子键</param>
        
/// <param name="key">键名</param>
        
/// <returns>返回是否成功bool值</returns>
        public static bool delValueKey(string subkey,string key)
        {
            
try
            {
                RegistryKey rk
=Registry.LocalMachine.OpenSubKey(subkey,true);
                
if(rk!=null)
                {
                    rk.DeleteValue(key);
                    rk.Close();
                    
return true;
                }
                
else
                {
                    
return false;
                }
            }
            
catch
            {
                
return false;
            }
        }
    }
}