亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么在 active directory 組中不能創建為 groupType = Local

為什么在 active directory 組中不能創建為 groupType = Local

C#
紅顏莎娜 2023-05-13 16:19:44
我無法理解為什么在活動目錄中將組創建為 groupType 的“本地”組不起作用。它拋出以下異常: System.DirectoryServices.DirectoryServicesCOMException (0x80072035): The server is unwilling to process the request.以下是代碼示例:        var parentEntry = new DirectoryEntry(ParentContainer);        var groupToCreate = parentEntry.Children.Add(this.AttributeType + this.Name, "group");        groupToCreate.Properties["description"].Add(this.Description);        groupToCreate.Properties["displayName"].Add(Name);        groupToCreate.Properties["groupType"].Add((int)GroupType.DomainLocalGroup); --> this line throws error.         groupToCreate.CommitChanges();如果我從 GroupType.DomainLocalGroup 更改為 GroupType.DomainGlobalGroup,一切正常。任何人都可以讓我知道如何擺脫這個問題嗎?
查看完整描述

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”語法覆蓋)

那是因為 的十進制值為0x800000042147483652,不適合 32 位整數。

但是你確實需要給它一個 32 位整數(你不能只轉換為 a?long)。所以你必須遵循建議并unchecked在鑄造時使用:

unchecked((int)?0x80000004)

這給你一個十進制值 -2147483644。

所以你的代碼應該是這樣的:

groupToCreate.Properties["groupType"].Add(unchecked((int)?GroupType.DomainLocalGroup));



查看完整回答
反對 回復 2023-05-13
  • 1 回答
  • 0 關注
  • 164 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號