怎么读注册表的二进制值和双字节值? 怎么读注册表的二进制值和双字节值? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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); } 以上是读取和设置SOFTWARE-HODS-START下的双字节值。 读"双字节值"时 报错:未处理的“System.InvalidCastException”类型的异常出现在 mscorlib.dll 中。其他信息: Specified cast is not valid. 引用using Microsoft.Win32了吗? 当然用了using Microsoft.Win32 int keyData = Convert.ToInt32(start.GetValue(name)); if (keyData == null)start.GetValue(name)得到结果是byte[]类型啊 zxcayumi(◎_◎) 你的方法读"双字节值"是可以的 I knowusing System.TextEncoding.Unicode.GetString(start.GetValue(name)); 注册表内的值是: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 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 zxcayumi(◎_◎) 麻烦你帮我试试,能不能读出来. string keyData = Encoding.ASCII.GetString((byte[])(hods.GetValue("Singer"))) ; 多谢zxcayumi(◎_◎) 我来试试 Bitmap 有意思[送分贴] 求助 DataGridView功能扩展需求(c#实现) 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件(C#) 请问值类型如何作引用字段? 生成HTML标记位置的简单问题 如何获取局域网中拨号计算机的IP 错误提示: 名称“pBox”在类或命名空间“CCRS.MainForm”中不存在 懂C#的真的很少呀~~~哎~~ 请教PDA, C# 调用cmd.exe DataGrid中datatable的级联操作! 请教,如何妥善使用线程
{
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);
}
using Microsoft.Win32
了吗?
if (keyData == null)start.GetValue(name)得到结果是byte[]类型啊
你的方法读"双字节值"是可以的
using System.Text
Encoding.Unicode.GetString(start.GetValue(name));
[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
把这下面一段内容复制到记事本中,然后另存为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
我来试试