注册表,关于写入和读取Dword值的方法 要求将值:4294967295用DWord类型写入注册表,然后再读取该值,请详细写出执行代码,代码运行成功后马上放分。\HKEY_USERS\A Value = 4294967295 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Registry.SetValue(strHKey, "A", 4294967295, RegistryValueKind.DWord);出现“值不在预期的范围内”的错误 您可以将 System.Int64 存储为 RegistryValueKind.DWord,但仅当它的值小于 System.Int32 的最大值时才可以这样做 对于64 位二进制数,应该使用QWord类型,不过挺奇怪的,这种类型不能直接在注册表编辑器中添加。 Microsoft.Win32.RegistryKey key; key = Microsoft.Win32.Registry.Users; key.SetValue("A", 4294967295L, Microsoft.Win32.RegistryValueKind.QWord); key.Close(); 那就变了类型喔,我需要的是DWord类型啊 研究出方法了,不过很囧~ uint i = 4294967295U; Microsoft.Win32.RegistryKey key; key = Microsoft.Win32.Registry.Users; key.SetValue("A",(int)i, Microsoft.Win32.RegistryValueKind.DWord); key.Close(); DWord(Double Word),指任何4个字节的存储。是int还是uint取决你你怎么去看它。比如0xFFFFFFFF理解为uint的时候为4294967295,理解为int的时候为-1。Registry.SetValue(strHKey, "A", unchecked((int)4294967295), RegistryValueKind.DWord);uint result = (uint)(int)Registry.GetValue(strHKey, "A", 0); //4294967295注:Registry.SetValue(strHKey, "A", 4294967295, RegistryValueKind.DWord)之所以会出错,是因为C#编译器聪明到推断出4294967295最好用uint来表示,编译成SetValue(..., (object)(uint)4294967295, ...); 我个人认为微软的SetValue见到RegistryValueKind.DWord时处理的不妥当 - 它只尝试着转换为int,而没有考虑uint的情况。 如何在不同项目中引用同一个cs文件 新手求教(关于数据库) 求助:.net中有没有提供求一个数的指数幂的函数 EXECUTE 权限。 谁能介绍一个基于BS结构的进销存系统 文本匡插入字符串 请教一个关于DataRelation的问题 大神们,求救啊 做了一个支持sql server和Oracle导出到Excel的小程序发出来和大家共享一下! 谁来帮帮我????? 关于c#网页设计里一个很简单问题~~ 关于时间转换的问题
出现“值不在预期的范围内”的错误
key = Microsoft.Win32.Registry.Users;
key.SetValue("A", 4294967295L, Microsoft.Win32.RegistryValueKind.QWord);
key.Close();
Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.Users;
key.SetValue("A",(int)i, Microsoft.Win32.RegistryValueKind.DWord);
key.Close();
比如0xFFFFFFFF理解为uint的时候为4294967295,理解为int的时候为-1。
Registry.SetValue(strHKey, "A", unchecked((int)4294967295), RegistryValueKind.DWord);
uint result = (uint)(int)Registry.GetValue(strHKey, "A", 0); //4294967295
注:
Registry.SetValue(strHKey, "A", 4294967295, RegistryValueKind.DWord)之所以会出错,是因为C#编译器聪明到推断出4294967295最好用uint来表示,编译成SetValue(..., (object)(uint)4294967295, ...);
我个人认为微软的SetValue见到RegistryValueKind.DWord时处理的不妥当 - 它只尝试着转换为int,而没有考虑uint的情况。