首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>C#语言>用C#操作类读写WinCE平台Mac地址代码祥解
用C#操作类读写WinCE平台Mac地址代码祥解
来源: 发布时间:2007-12-30 发布人: 浏览: 人次   字体: [ ]  
前段时间在测试我们触摸屏联网性能的时候,由于屏的Mac地址通过注册表设置,而PB定制WinCE内核的时候就有一个默认值,所以一批下来Mac地址都一样,两台以上的机器一联网准出问题,通过注册表软件去修改Mac地址太麻烦了,所以做了一个小的Mac地址软件。
现在用C#做了一个注册表操作类也别简单的只做数据读写了,索性也做个全功能的了。由于.Net在域名空间Microsoft.Win32中提供RegistryKey类,操作注册表还是比较方便的,唯感不足的时在操作多级子键的时候不很便捷,所以在封装注册表操作类的时候也把这部分内容给考虑进去了。
注册表操作类代码(可以用在.Net精简框架集下)如下:
///<summary>
///注册表操作类 -- 叶帆工作室
///</summary>
public class YFReg
{
    public enum HKEY { HKEY_LOCAL_MACHINE = 0, HKEY_CLASSES_ROOT = 1, HKEY_CURRENT_USER = 2, HKEY_USERS = 3 };
    private RegistryKey[] reg = new RegistryKey[4];
 
    public YFReg()
    {
        reg[(int)HKEY.HKEY_LOCAL_MACHINE] = Registry.LocalMachine;
        reg[(int)HKEY.HKEY_CLASSES_ROOT] = Registry.ClassesRoot;
        reg[(int)HKEY.HKEY_CURRENT_USER] = Registry.CurrentUser;
        reg[(int)HKEY.HKEY_USERS] = Registry.Users;
    }
 
    //读指定变量值
    public string ReadValue(HKEY Root,string SubKey,string ValueName)
    {
        RegistryKey subKey=reg[(int)Root];
        if (ValueName.Length == 0) return "[ERROR]";
        try
        {
            if (SubKey.Length > 0)
            {
                string[] strSubKey = SubKey.Split('\\');
                foreach (string strKeyName in strSubKey)
                {
                    subKey = subKey.OpenSubKey(strKeyName);
                }
            }
            string strKey = subKey.GetValue(ValueName).ToString();
            subKey.Close();
            return strKey;
        }
        catch
        {
            return "[ERROR]";
        }
    }
 
    //读指定变量的类型
    public RegistryValueKind ReadValueType(HKEY Root, string SubKey, string ValueName)
    {
        RegistryKey subKey = reg[(int)Root];
        if (ValueName.Length == 0) return RegistryValueKind.Unknown;
        try
        {
            if (SubKey.Length > 0)
            {
                string[] strSubKey = SubKey.Split('\\');
                foreach (string strKeyName in strSubKey)
                {
                    subKey = subKey.OpenSubKey(strKeyName);
                }
            }
            RegistryValueKind valueType = subKey.GetValueKind(ValueName);               
            subKey.Close();
            return valueType;
        }
        catch
        {
            return RegistryValueKind.Unknown;
        }
    }
 
    //写指定变量值
    public int WriteValue(HKEY Root, string SubKey, string ValueName, string ValueData)
    {
        return WriteValue(Root, SubKey, ValueName, ValueData, RegistryValueKind.String); 
    }
   
    //写指定变量值
    public int WriteValue(HKEY Root, string SubKey, string ValueName,object ValueData,RegistryValueKind ValueType)
    {
        RegistryKey subKey = reg[(int)Root];
        if (ValueName.Length == 0) return 2;
        try
        {
            if (SubKey.Length > 0)
            {
                string[] strSubKey = SubKey.Split('\\');
                foreach (string strKeyName in strSubKey)
               {
                    subKey = subKey.CreateSubKey(strKeyName);
                }
            }
            subKey.SetValue(ValueName, ValueData, ValueType);
            subKey.Close();
            return 0;
        }
        catch
        {
            return 1;
        }
    }
 
    //删除指定变量
    public int DeleteValue(HKEY Root, string SubKey, string ValueName)
    {
        RegistryKey subKey = reg[(int)Root];
        try
        {
            if (SubKey.Length > 0)
            {
                string[] strSubKey = SubKey.Split('\\');
                foreach (string strKeyName in strSubKey)
                {
                    subKey = subKey.OpenSubKey(strKeyName,true);
                }
            }
            subKey.DeleteValue(ValueName, true);
            subKey.Close();
            return 0;
        }
        catch
        {
            return 1;
        }
    }
 
    //创建指定的键
    public int CreateKey(HKEY Root, string SubKey, string KeyName)
    {
        RegistryKey subKey = reg[(int)Root];
        if (KeyName.Length == 0) return 2;
        try
        {
            if (SubKey.Length > 0)
            {
                string[] strSubKey = SubKey.Split('\\');
                foreach (string strKeyName in strSubKey)
                {
                    subKey = subKey.CreateSubKey(strKeyName);
                }
            }
            subKey.CreateSubKey(KeyName);
            subKey.Close();
            return 0;
        }
        catch
        {
            return 1;
        }
    }
 
    //删除指定的键
    public int DeleteKey(HKEY Root, string SubKey, string KeyName)
    {
        RegistryKey subKey = reg[(int)Root];
        try
        {
            if (SubKey.Length > 0)
            {
                string[] strSubKey = SubKey.Split('\\');
                foreach (string strKeyName in strSubKey)
                {
                    subKey = subKey.OpenSubKey(strKeyName, true);
                }
            }
            subKey.DeleteSubKeyTree(KeyName);
            subKey.Close();
            return 0;
        }
        catch
        {
            return 1;
        }
    }
 

共2页: 上一页 1 [2] 下一页
相 关 文 章   发布商链接
·C#中判断字符是否为中文代码
·C#实现更改IP功能源码
·初学者参考C#中操作XML修改完整版
·谈谈对C#委托的理解,附代码实例
·C#中操作XML Node节点细节操作
·浅谈C#对象深拷贝、浅铐贝、直接拷贝
·用C#编写ActiveX控件代码实例
·C#正则表达式常用备忘参考
·C#实现阿拉伯数字转变成大写的类
·什么是装箱和拆箱?及其相应的操作事...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·有助快速理解C#委托和事件之...
·C#泛型学习笔记总结
·c#语言从dbf数据库提取数据并
·C#编写控制线程的运行和线程...
·怎样在C#中删除只读文件及其...
·C#函数中返回多个值的两种方...
·如何在C#中插入照片到Excel文
·如何在c#中获取事件注册的方...
·C#对timer类的使用操作代码
·什么是泛型?泛型的一些概述
·C#如何从文本文件读取信息并...
·如何在c#中去掉字符串中的回...
·如何使用C#获取IIS服务器版本...
·什么是泛型编程思想?及其简...
·c#子线程控制进度条的一个简...
热 门 文 章
·c#中收发邮件处理代码(POP3,...
·C#如何获取文件路径中的文件...
·什么是c#深拷贝与浅拷贝及其...
·C#中关于四舍五入函数的讨论...
·c#中的ArrayList属性祥解及其...
·C#语言实现创建、删除和移动...
·快速进行List排序的通用方法...
·C#对timer类的使用操作代码
·String.Split 方法使用及其代...
·如何在c#中去掉字符串中的回...
·用C#编写ActiveX控件代码实例
·C#语言实现从XML文件导出数据...
·C#如何从文本文件读取信息并...
·浅谈接口和抽象类的区别,加...
·c#子线程控制进度条的一个简...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .