You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 4.5 WinForms调用Registry.SetValue设DWord值报错求助

修复Registry.SetValue设置DWORD注册表值时的类型不匹配错误

你当前的代码错误原因是:当指定RegistryValueKind.DWord时,传入的值必须是整数类型(int或uint),但你传递的是十六进制格式的字符串,.NET无法将这类字符串自动转换为符合要求的数值类型,因此抛出类型不匹配的异常。

修复后的代码示例

设置NetworkThrottlingIndex为ffffffff(无符号最大值,对应十进制4294967295)

直接传入uint类型的十六进制数值:

Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile", "NetworkThrottlingIndex", 0xFFFFFFFF, RegistryValueKind.DWord);

如果需要使用int类型(需通过unchecked绕过范围检查):

Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile", "NetworkThrottlingIndex", unchecked((int)0xFFFFFFFF), RegistryValueKind.DWord);

设置NetworkThrottlingIndex为0000000a(对应十进制10)

直接传入十进制整数或十六进制整数均可:

// 十六进制写法
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile", "NetworkThrottlingIndex", 0xA, RegistryValueKind.DWord);

// 十进制写法
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile", "NetworkThrottlingIndex", 10, RegistryValueKind.DWord);

额外注意事项

  • 修改HKEY_LOCAL_MACHINE路径下的注册表项需要管理员权限,请确保程序以管理员身份运行,否则会抛出权限不足的异常。
  • 若在64位系统中运行32位程序,注册表操作会被自动重定向到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node路径。如果需要操作原生64位注册表项,需显式指定RegistryView:
using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var subKey = baseKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile", true))
{
    subKey.SetValue("NetworkThrottlingIndex", 0xFFFFFFFF, RegistryValueKind.DWord);
}

内容的提问来源于stack exchange,提问作者Fath Bakri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:50:19