分享
 
 
 

一个操作注册表的类

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

早上写了一个简单的操作注册表的类。

现在帖出来让大家帮我看看,有什么问题请联系我。

using System;

using Microsoft.Win32;

namespace PowerComponent

{

/// <summary>

/// 操作注册表

/// </summary>

public class Register

{

/// <summary>

/// 实例构造函数

/// </summary>

public Register()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

#region 公共方法

/// <summary>

/// 写入注册表,如果指定项已经存在,则修改指定项的值

/// </summary>

/// <param name="keytype">注册表基项枚举</param>

/// <param name="key">注册表项,不包括基项</param>

/// <param name="name">值名称</param>

/// <param name="values">值</param>

/// <returns>返回布尔值,指定操作是否成功</returns>

public bool setValue(XjxComponent.Register.keyType keytype, string key, string name, string values)

{

try

{

RegistryKey rk = (RegistryKey)getRegistryKey(keytype);

RegistryKey rkt = rk.CreateSubKey(key);

if(rkt != null)

rkt.SetValue(name, values);

else

{

throw (new Exception("要写入的项不存在"));

}

return true;

}

catch

{

return false;

}

}

/// <summary>

/// 读取注册表

/// </summary>

/// <param name="keytype">注册表基项枚举</param>

/// <param name="key">注册表项,不包括基项</param>

/// <param name="name">值名称</param>

/// <returns>返回字符串</returns>

public string getValue(XjxComponent.Register.keyType keytype, string key, string name)

{

try

{

RegistryKey rk = (RegistryKey)getRegistryKey(keytype);

RegistryKey rkt = rk.OpenSubKey(key);

if(rkt != null)

return rkt.GetValue(name).ToString();

else

throw(new Exception("无法找到指定项"));

}

catch(Exception ex)

{

return ex.Message;

}

}

/// <summary>

/// 删除注册表中的值

/// </summary>

/// <param name="keytype">注册表基项枚举</param>

/// <param name="key">注册表项名称,不包括基项</param>

/// <param name="name">值名称</param>

/// <returns>返回布尔值,指定操作是否成功</returns>

public bool deleteValue(XjxComponent.Register.keyType keytype, string key, string name)

{

try

{

RegistryKey rk = (RegistryKey)getRegistryKey(keytype);

RegistryKey rkt = rk.OpenSubKey(key,true);

if( rkt != null)

rkt.DeleteValue(name,true);

else

throw(new Exception("无法找到指定项"));

return true;

}

catch

{

return false;

}

}

/// <summary>

/// 删除注册表中的指定项

/// </summary>

/// <param name="keytype">注册表基项枚举</param>

/// <param name="key">注册表中的项,不包括基项</param>

/// <returns>返回布尔值,指定操作是否成功</returns>

public bool deleteSubKey(XjxComponent.Register.keyType keytype, string key)

{

try

{

RegistryKey rk = (RegistryKey)getRegistryKey(keytype);

rk.DeleteSubKeyTree(key);

return true;

}

catch

{

return false;

}

}

/// <summary>

/// 判断指定项是否存在

/// </summary>

/// <param name="keytype">基项枚举</param>

/// <param name="key">指定项字符串</param>

/// <returns>返回布尔值,说明指定项是否存在</returns>

public bool isExist(XjxComponent.Register.keyType keytype, string key)

{

RegistryKey rk = (RegistryKey)getRegistryKey(keytype);

if(rk.OpenSubKey(key) == null)

return false;

else

return true;

}

/// <summary>

/// 检索指定项关联的所有值

/// </summary>

/// <param name="keytype">基项枚举</param>

/// <param name="key">指定项字符串</param>

/// <returns>返回指定项关联的所有值的字符串数组</returns>

public string[] getValues(XjxComponent.Register.keyType keytype, string key)

{

RegistryKey rk = (RegistryKey)getRegistryKey(keytype);

RegistryKey rkt = rk.OpenSubKey(key);

if(rkt != null)

{

string[] names = rkt.GetValueNames();

if(names.Length == 0)

return names;

else

{

string[] values = new string[names.Length];

int i = 0;

foreach(string name in names)

{

values[i] = rkt.GetValue(name).ToString();

i++;

}

return values;

}

}

else

{

throw (new Exception("指定项不存在"));

}

}

#endregion

#region 私有方法

/// <summary>

/// 返回RegistryKey对象

/// </summary>

/// <param name="keytype">注册表基项枚举</param>

/// <returns></returns>

private object getRegistryKey(XjxComponent.Register.keyType keytype)

{

RegistryKey rk = null;

switch(keytype)

{

case keyType.HKEY_CLASS_ROOT:

rk = Registry.ClassesRoot;

break;

case keyType.HKEY_CURRENT_USER:

rk = Registry.CurrentUser;

break;

case keyType.HKEY_LOCAL_MACHINE:

rk = Registry.LocalMachine;

break;

case keyType.HKEY_USERS:

rk = Registry.Users;

break;

case keyType.HKEY_CURRENT_CONFIG:

rk = Registry.CurrentConfig;

break;

}

return rk;

}

#endregion

#region 枚举

/// <summary>

/// 注册表基项枚举

/// </summary>

public enum keyType:int

{

/// <summary>

/// 注册表基项 HKEY_CLASSES_ROOT

/// </summary>

HKEY_CLASS_ROOT = 0,

/// <summary>

/// 注册表基项 HKEY_CURRENT_USER

/// </summary>

HKEY_CURRENT_USER = 1,

/// <summary>

/// 注册表基项 HKEY_LOCAL_MACHINE

/// </summary>

HKEY_LOCAL_MACHINE = 2,

/// <summary>

/// 注册表基项 HKEY_USERS

/// </summary>

HKEY_USERS = 3,

/// <summary>

/// 注册表基项 HKEY_CURRENT_CONFIG

/// </summary>

HKEY_CURRENT_CONFIG = 4

}

#endregion

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有