我注意到写入注册表时的值应该是有符号整数,而不是无符号整数DWord
。QWord
如果值为 UInt64 或 UInt32,此代码将引发异常:
registryKey.SetValue(name, value);
根据 MSDNDWORD
是一个 32 位无符号整数(范围:0 到 4294967295 十进制)https://msdn.microsoft.com/en-us/library/cc230318.aspx
因此,要将新DWORD
值写入注册表,我需要将其转换为有符号整数,如下所示:
UInt32 unsignedValue = (UInt32)someValue;
Int32 signedValue = (Int32)unsignedValue;
registryKey.SetValue(name, signedValue);
将无符号值传递给SetValue方法将引发异常。我是错过了什么还是我只是迟钝?