zoukankan      html  css  js  c++  java
  • 获取Windows用户所有的账户名

     /// <summary>
            /// 设置用户密码
            /// </summary>
           [DllImport("Netapi32.dll")]
            extern static int NetUserEnum([MarshalAs(UnmanagedType.LPWStr)] string sName,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);
            /*
            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
            public struct LOCALGROUP_USERS_INFO_0
            {
                public string GroupName;
            }
             */
            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
            public struct USER_INFO_1
            {
                public string sName;    //用户名
                public string sPass;    //用户密码
                public int PasswordAge; //密码级别
                public int sPriv;       //帐户类型 1
                public string sHomeDir; //用户主目录 null
                public string sComment; //用户描述
                public int sFlags;      //用户权限
                public string sScriptPath;  //登陆脚本路径 null
            }
            public List<string> UserEnum()
            {
                List<String> listNames = new List<string>();
                int Entriesread;
                int TotalEntries;
                int Resume_Handle;
                IntPtr bufPtr;
                if (NetUserEnum(null, 1, 0, out bufPtr, -1, out Entriesread, out TotalEntries, out Resume_Handle) != 0)
                {
                    throw (new Exception("枚举全部用户失败"));
                }
                if (Entriesread > 0)
                {
                    USER_INFO_1[] UserInfo = new USER_INFO_1[Entriesread];
                    IntPtr iter = bufPtr;
                    for (int i = 0; i < Entriesread; i++)
                    {
                        UserInfo[i] = (USER_INFO_1)Marshal.PtrToStructure(iter,  typeof(USER_INFO_1));
                        iter = (IntPtr)((int)iter + Marshal.SizeOf(typeof(USER_INFO_1)));
                        listNames.Add(UserInfo[i].sName);
                        
                    }
                }
                NetApiBufferFree(bufPtr);
                return listNames;
            }
  • 相关阅读:
    CentOS yum 源的配置与使用
    CentOS 添加常用 yum 源
    给centOs添加epel源
    centos 推荐使用epel源
    如何在CentOS 5/6上安装EPEL 源
    为centos添加第三方源
    Linux远程桌面工具 -- NoMachine
    Redis windows版本的启停bat脚本命令
    Elasticsearch+Hbase实现海量数据秒回查询
    mysql 与elasticsearch实时同步常用插件及优缺点对比(ES与关系型数据库同步)
  • 原文地址:https://www.cnblogs.com/EthanSun/p/3184101.html
Copyright © 2011-2022 走看看