Согласно Microsoft , вот как определяется тип перечисления группы:
- 1 (0x00000001) Указывает группу, созданную системой.
- 2 (0x00000002) Указывает группу с глобальной областью действия.
- 4 (0x00000004) Указывает группу с локальной областью домена.
- 8 (0x00000008) Указывает группу с универсальной областью действия.
- 16 (0x00000010) Указывает группу APP_BASIC для диспетчера авторизации Windows Server.
- 32 (0x00000020) Указывает группу APP_QUERY для диспетчера авторизации Windows Server.
- 2147483648 (0x80000000) Указывает защитугруппа.Если этот флаг не установлен, то группа является группой рассылки.
Но это также перечисление флага - это означает, что значения можно объединять, складывая их вместе.Так что да, 0x80000004
на самом деле является допустимым значением, которое означает «локальная группа безопасности домена».(0x4
является локальной группой рассылки домена)
Но вам нужно привести к целому числу (оно не позволит вам установить его с шестнадцатеричным значением).Я удивлен, что вы получили исключение "Сервер не хочет обрабатывать запрос", потому что, когда я делаю это:
(int) 0x80000004
Я получаю эту ошибку компилятора:
CS0221: Постоянное значение «2147483652» не может быть преобразовано в «int» (используйте «unchecked» синтаксис для переопределения)
Это потому, что десятичное значение 0x80000004
равно 2147483652, которое не помещается в32-разрядное целое число.
Но вам нужно дать ему 32-разрядное целое число (вы не можете просто привести к long
).Поэтому вы должны следовать предложению и использовать unchecked
при приведении:
unchecked((int) 0x80000004)
, что дает десятичное значение -2147483644.
Так что ваш код долженвыглядеть так:
groupToCreate.Properties["groupType"].Add(unchecked((int) GroupType.DomainLocalGroup));