Я столкнулся со странной проблемой: при установке значений типа DWORD в реестре Windows из моего приложения C # я продолжаю получать ошибки, когда установлен старший бит.Очевидно, что существует какая-то проблема преобразования между целыми числами со знаком и без знака.
Пример: когда я делаю что-то подобное
regKey.SetValue("Value", 0x70000000u, RegistryValueKind.DWord);
, это работает нормально.Но когда я добавляю старший бит (который, поскольку я специально имею дело с целыми числами без знака, должен быть просто еще одним битом значения), как это
regKey.SetValue("Value", 0xf0000000u, RegistryValueKind.DWord);
, я получаю исключение («Тип значенияобъект не соответствует указанному RegistryValueKind или объект не может быть правильно преобразован ").
Но не должен ли он работать?DWORD - это 32-разрядный целочисленный тип данных без знака, как и литерал 0xf0000000u
(C # автоматически назначает ему тип данных UInt32), поэтому они должны идеально совпадать (и вручную установить значение в редакторе реестра на «0xf0000000»).тоже отлично работает).Это ошибка в .NET или я делаю что-то не так?