请问如何查询出windows所有本地用户的信息,麻烦知道的大大指点一下,谢谢,最好给个完整点的例子,谢谢了

解决方案 »

  1.   


            //枚举全部用户
            [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 );
            [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 string UserEnum() {
                string tempStr = "<?xml version=\"1.0\" encoding=\"gb2312\" ?>\r\n";
                tempStr += "<INFO>\r\n";
                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 ) ) );
                        tempStr += "<ITEM value=\"" + UserInfo[ i ].sComment + "\">" + UserInfo[ i ].sName + "</ITEM>\r\n";
                    }
                    tempStr += "</INFO>";
                }
                //NetApiBufferFree( bufPtr );
                return tempStr;
            }        private void button1_Click( object sender, EventArgs e ) {
                textBox1.Text = UserEnum();//其余代码略
    结果如下
    <?xml version="1.0" encoding="gb2312" ?>
    <INFO>
    <ITEM value="管理计算机(域)的内置帐户">Administrator</ITEM>
    <ITEM value="供来宾访问计算机或访问域的内置帐户">Guest</ITEM>
    <ITEM value="用于匿名访问 Internet 信息服务的内置帐户。">IUSR_WIN-4GHYDHUWOMX</ITEM>
    <ITEM value="">kkun</ITEM>
    <ITEM value="VMware User">__vmware_user__</ITEM>
    </INFO>
      

  2.   

    参考:
    C#管理Windows本地用户 
    http://www.cnblogs.com/devsdk/archive/2009/04/03/1428621.html