1 回答

TA贡献1816条经验 获得超4个赞
根据 Microsoft 的说法,组类型枚举的定义方式如下:
1 (0x00000001) 指定由系统创建的组。
2 (0x00000002) 指定具有全局范围的组。
4 (0x00000004) 指定具有域本地作用域的组。
8 (0x00000008) 指定具有通用范围的组。
16 (0x00000010) 为 Windows Server 授权管理器指定一个 APP_BASIC 组。
32 (0x00000020) 为 Windows Server 授权管理器指定一个 APP_QUERY 组。
2147483648 (0x80000000) 指定安全组。如果未设置此标志,则该组为通讯组。
但这也是一个标志枚举——意味着可以通过将它们相加来组合值。所以是的,0x80000004
实际上是一个有效值,表示“域本地安全组”。(0x4
是域本地通讯组)
但是你必须转换为一个整数(它不会让你用十六进制值设置它)。我很惊讶你得到的异常是“服务器不愿意处理请求”,因为当我这样做时:
(int) 0x80000004
我收到此编译器错误:
CS0221:常量值“2147483652”无法转换为“int”(使用“unchecked”语法覆盖)
那是因为 的十进制值为0x80000004
2147483652,不适合 32 位整数。
但是你确实需要给它一个 32 位整数(你不能只转换为 a long
)。所以你必须遵循建议并unchecked
在铸造时使用:
unchecked((int) 0x80000004)
这给你一个十进制值 -2147483644。
所以你的代码应该是这样的:
groupToCreate.Properties["groupType"].Add(unchecked((int) GroupType.DomainLocalGroup));
- 1 回答
- 0 关注
- 134 浏览
添加回答
举报