现在的位置: 首页 > 综合 > 正文

C#获取windows所有用户名

2012年03月25日 ⁄ 综合 ⁄ 共 1624字 ⁄ 字号 评论关闭

#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

抱歉!评论已关闭.