C#获取windows所有用户名

本文提供了一种验证操作系统中用户名是否存在的方法。通过调用Netapi32.dll中的NetUserEnum函数获取系统中的所有用户名,并将其存储在列表中以便进一步检查。这种方法适用于需要验证用户身份的应用程序开发。

#region 验证操作系统用户名
        public bool isExistUserName(string name)
        {
            List<string> nameList = GetSysUserNames();
            return nameList.Contains(name);
        }

        public List<string> GetSysUserNames()
        {
            int EntriesRead;
            int TotalEntries;
            int Resume;
            IntPtr bufPtr;
            List<string> temp = new List<string>();

            NetUserEnum(null, 0, 2, out   bufPtr, -1, out   EntriesRead,
                    out   TotalEntries, out   Resume);
            if (EntriesRead > 0)
            {
                USER_INFO_0[] Users = new USER_INFO_0[EntriesRead];
                IntPtr iter = bufPtr;
                for (int i = 0; i < EntriesRead; i++)
                {
                    Users[i] = (USER_INFO_0)Marshal.PtrToStructure(iter,
                            typeof(USER_INFO_0));
                    iter = (IntPtr)((int)iter + Marshal.SizeOf(typeof(USER_INFO_0)));
                    temp.Add(Users[i].Username);
                }
                NetApiBufferFree(bufPtr);
            }
            return temp;
        }
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        public struct USER_INFO_0
        {
            public string Username;
        }
        [DllImport("Netapi32.dll ")]
        extern static int NetUserEnum(
                [MarshalAs(UnmanagedType.LPWStr)]  
        string servername,
                int level,
                int filter,
                out   IntPtr bufptr,
                int prefmaxlen,
                out   int entriesread,
                out   int totalentries,
                out   int resume_handle);

        [DllImport("Netapi32.dll ")]
        extern static int NetApiBufferFree(IntPtr Buffer);
        #endregion

转载于:https://www.cnblogs.com/futao/archive/2011/05/10/2042138.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值