Показать сообщение отдельно
Старый 01.07.2009, 15:58   #3  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от Poleax Посмотреть сообщение
Кто нибудь пробовал переносить класс AxaptaUserManager с аксапты 4.0 в 3.0?
Если Вас не смущает использование .NET в Ax 3.0 (подробности тут), то все очень просто. Вот пример, который выведет Вам всех пользователей в AD, причем можно по параметром отсекать тех, которые Вам не нужны(отключенных или например из определенной папки).
Код:
using System;
using System.DirectoryServices;

namespace testAD
{
    class Program
    {
        static void Main(string[] args)
        {
            String ldapPath = @"LDAP://bla-bla-bla";
            DirectoryEntry root = new DirectoryEntry(ldapPath);
            PrintUsers(root);            
        }

        [Flags]
        public enum AdsUserFlags
        {
            Script = 1,                  // 0x1
            AccountDisabled = 2,              // 0x2
            HomeDirectoryRequired = 8,           // 0x8 
            AccountLockedOut = 16,             // 0x10
            PasswordNotRequired = 32,           // 0x20
            PasswordCannotChange = 64,           // 0x40
            EncryptedTextPasswordAllowed = 128,      // 0x80
            TempDuplicateAccount = 256,          // 0x100
            NormalAccount = 512,              // 0x200
            InterDomainTrustAccount = 2048,        // 0x800
            WorkstationTrustAccount = 4096,        // 0x1000
            ServerTrustAccount = 8192,           // 0x2000
            PasswordDoesNotExpire = 65536,         // 0x10000
            MnsLogonAccount = 131072,           // 0x20000
            SmartCardRequired = 262144,          // 0x40000
            TrustedForDelegation = 524288,         // 0x80000
            AccountNotDelegated = 1048576,         // 0x100000
            UseDesKeyOnly = 2097152,            // 0x200000
            DontRequirePreauth = 4194304,          // 0x400000
            PasswordExpired = 8388608,           // 0x800000
            TrustedToAuthenticateForDelegation = 16777216, // 0x1000000
            NoAuthDataRequired = 33554432         // 0x2000000
        }

        private static void PrintUsers(DirectoryEntry de)
        {
            foreach (DirectoryEntry elem in de.Children)
            {
                if (string.Compare(elem.SchemaClassName, "user") != 0)
                    PrintUsers(elem);
                else
                {
                    AdsUserFlags userFlags = (AdsUserFlags)elem.Properties["userAccountControl"].Value;
                    //На случай если поле null
                    try
                    {
                        Console.WriteLine("User: {0}", elem.Properties["displayName"].Value.ToString());
                    }
                    catch
                    {
                        Console.WriteLine("User:");
                    }
                    Console.WriteLine("Path: {0}", elem.Path);
                    Console.WriteLine("Parameters: {0}", userFlags);
                }
            }
        }
    }
}