怎么读注册表的二进制值和双字节值?

解决方案 »

  1.   

    public int  GetRegData(string name)//读取
            {
                RegistryKey key = Registry.LocalMachine;
                RegistryKey software = key.OpenSubKey("SOFTWARE", true);
                RegistryKey hods = software.OpenSubKey("HODS", true);
                RegistryKey start = hods.OpenSubKey("START", true);
                int  keyData = Convert.ToInt32(start.GetValue(name));
                if (keyData == null)
                {
                    start.SetValue(name, 0);
                    keyData = 0;
                }
                return keyData;
            }        public void SetRegData(string name , int value)//设置
            {
                RegistryKey key = Registry.LocalMachine;
                RegistryKey software = key.OpenSubKey("SOFTWARE", true);
                RegistryKey hods = software.OpenSubKey("HODS",true);
                RegistryKey start = hods.OpenSubKey("START", true);
                start.SetValue(name, value);
            }
      

  2.   

    以上是读取和设置SOFTWARE-HODS-START下的双字节值。
      

  3.   

    读"双字节值"时 报错:未处理的“System.InvalidCastException”类型的异常出现在 mscorlib.dll 中。其他信息: Specified cast is not valid.
      

  4.   

    引用
    using Microsoft.Win32
    了吗?
      

  5.   

    当然用了using Microsoft.Win32            int  keyData = Convert.ToInt32(start.GetValue(name));
                if (keyData == null)start.GetValue(name)得到结果是byte[]类型啊
      

  6.   

    zxcayumi(◎_◎) 
    你的方法读"双字节值"是可以的
      

  7.   

    I know
    using System.Text
    Encoding.Unicode.GetString(start.GetValue(name));
      

  8.   

    注册表内的值是:REGEDIT4
    [HKEY_LOCAL_MACHINE\SOFTWARE\TEST]"Singer"=hex:61,75,74,68,6f,72,69,7a,61,74,69,6f,6e,00,00,00,00,00,00,00,00,00,\
      00,00,00,00
      

  9.   

    zxcayumi(◎_◎) 还没有解决:
    把这下面一段内容复制到记事本中,然后另存为aa.reg文件,再运行aa.reg文件.就会把
    Singer值导入到HKEY_LOCAL_MACHINE\SOFTWARE\TEST目录下.REGEDIT4
    [HKEY_LOCAL_MACHINE\SOFTWARE\TEST]"Singer"=hex:61,75,74,68,6f,72,69,7a,61,74,69,6f,6e,00,00,00,00,00,00,00,00,00,\
      00,00,00,00
      

  10.   

    zxcayumi(◎_◎) 麻烦你帮我试试,能不能读出来.
      

  11.   

    string keyData = Encoding.ASCII.GetString((byte[])(hods.GetValue("Singer"))) ;
      

  12.   

    多谢zxcayumi(◎_◎) 
    我来试试