C# 取得当前系统所有用户名

 using System;
using System.Text;
//
using System.Runtime.InteropServices;

namespace ConsoleTest
{
    class Program
    {
        [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);

        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();

            int EntriesRead;
            int TotalEntries;
            int Resume;
            IntPtr bufPtr;

            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)));
                    sb.AppendLine(Users[i].Username);
                }
                NetApiBufferFree(bufPtr);
                //输出
                Console.WriteLine(sb.ToString());
            }
            Console.ReadKey();
        }
    }
}

你可能感兴趣的:(C# 取得当前系统所有用户名)