Как поместить DWORD в реестр с наивысшим битом set

Я столкнулся со странной проблемой: при установке значений типа DWORD в реестре Windows из моего приложения C # я продолжаю получать ошибки, когда установлен самый высокий бит. По-видимому, существует какая-то проблема преобразования между целыми числами со знаком и без знака.

Пример: когда я делаю что-то вроде этого

regKey.SetValue("Value", 0x70000000u, RegistryValueKind.DWord);

, все работает нормально. Но когда я добавляю наивысший бит (который, поскольку я имею дело с целыми числами без знака, должен быть просто еще одним битом значения), как этот

regKey.SetValue("Value", 0xf0000000u, RegistryValueKind.DWord);

, я получаю исключение («Тип объекта значения не соответствует указанному RegistryValueKind или объект не может быть правильно преобразован ").

Но разве это не должно работать? DWORD - это 32-разрядный целочисленный тип данных без знака, как и литерал 0xf0000000u (C # автоматически присваивает ему тип данных UInt32), поэтому они должны идеально совпадать (и устанавливать значение вручную в редакторе реестра. to "0xf0000000" тоже работает нормально). Это ошибка .NET или я что-то делаю не так?

18
задан Andreas Baus 7 July 2011 в 09:33
поделиться