检测域账号是否禁用、密码是否永不过期

代码1

using System;
using System.DirectoryServices.AccountManagement;

class Program
{
    static void Main(string[] args)
    {
        // 从控制台输入用户名
        Console.Write("请输入要查询的用户名: ");
        string userName = Console.ReadLine();

        // 使用当前默认域名
        using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
        {
            // 查找用户
            UserPrincipal user = UserPrincipal.FindByIdentity(context, userName);
            if (user != null)
            {
                // 检查账号是否禁用
                bool isAccountDisabled = user.Enabled.HasValue && !user.Enabled.Value;
                Console.WriteLine("账号是否禁用: " + isAccountDisabled);

                // 检查密码是否永不过期
                bool isPasswordNeverExpires = user.PasswordNeverExpires;
                Console.WriteLine("密码是否永不过期: " + isPasswordNeverExpires);
            }
            else
            {
                Console.WriteLine("找不到用户: " + userName);
            }
        }
        Console.ReadKey();
    }
}

代码2

        try
        {
            // 使用当前默认域名
            using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
            {
                // 创建一个 UserPrincipal 对象来搜索所有用户
                UserPrincipal userPrincipal = new UserPrincipal(context);
                using (PrincipalSearcher searcher = new PrincipalSearcher(userPrincipal))
                {
                    foreach (Principal result in searcher.FindAll())
                    {
                        // 将结果转换为 UserPrincipal
                        UserPrincipal user = result as UserPrincipal;
                        if (user != null)
                        {
                            // 打印用户名
                            Console.WriteLine("用户名: " + user.SamAccountName);

                            // 检查账号是否禁用
                            bool isAccountDisabled = user.Enabled.HasValue && !user.Enabled.Value;
                            Console.WriteLine("账号是否禁用: " + isAccountDisabled);

                            // 检查密码是否永不过期
                            bool isPasswordNeverExpires = user.PasswordNeverExpires;
                            Console.WriteLine("密码是否永不过期: " + isPasswordNeverExpires);
                            //最后一次修改密码 实际结果要+8小时?
                            Console.WriteLine("最后一次修改密码: " + user.LastPasswordSet);
                            Console.WriteLine("--------------------------------------------");
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("发生错误: " + ex.Message);
        }

        Console.ReadKey();
posted @ 2024-08-28 21:20  shenshu  阅读(50)  评论(0编辑  收藏  举报