2

ADACEを読み込もうとしています。問題は、権利や継承などは表示されますが、ObjectType(ACEの名前はGUID形式です)です。ObjectTypeのわかりやすい名前を取得しようとしています。これが私のコードです

System.DirectoryServices.DirectoryEntry userEntry = new DirectoryEntry("LDAP://xx");

System.Security.AccessControl.AuthorizationRuleCollection rules = userEntry.ObjectSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier));

foreach (System.Security.AccessControl.AuthorizationRule rule in rules)
{
   System.DirectoryServices.ActiveDirectoryAccessRule oar = rule as System.DirectoryServices.ActiveDirectoryAccessRule;
   Console.WriteLine(oar.ObjectType.ToString()); //GUID
   ....                     
}

オブジェクト名を取得する方法を教えてください。または、使用する必要のある別のAPIがある可能性があります。

ありがとう

4

1 に答える 1

0

「ldapDisplayName」プロパティのスキーマと構成について別のクエリを実行する必要がありました

        public static string GetNameForGuidasd(string objectGuid, string targetAttribute, string propertyToQuery, DirectoryEntry searchRoot)
        {
            DirectoryEntry schemaContainer = new DirectoryEntry("LDAP://cn=schema,cn=configuration,DC=xx,DC=xx");
            string attributeName = null;
            DirectorySearcher searcher = new DirectorySearcher(schemaContainer);
            searcher.SearchScope = SearchScope.OneLevel;
            string filter = String.Format("(&({0}={1}))", propertyToQuery, BuildFilterOctetString(objectGuid));
            searcher.Filter = filter;
            using (searcher)
            {
                var result = searcher.FindOne();
                if (result != null)
                {
                    attributeName = (string)result.Properties[targetAttribute][0];
                }
            }
        }

        private static string BuildFilterOctetString(string objectGuid)
        {
            System.Guid guid = new Guid(objectGuid);
            byte[] byteGuid = guid.ToByteArray();
            string queryGuid = "";
            foreach (byte b in byteGuid)
            {
                queryGuid += @"\" + b.ToString("x2");
            }
            return queryGuid; 
        }
于 2013-03-25T13:44:28.910 に答える