枚举当前系统用户(使用NetUserEnum API枚举)

using System.Runtime.InteropServices;

[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);

private void button1_Click(object senderEventArgs e)

{

int EntriesRead;

int TotalEntries;

int Resume;

IntPtr bufPtr;

NetUserEnum(null02out bufPtr, -1out 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)));

textBox1.AppendText(Users[i].Username + "/r/n");

}

NetApiBufferFree(bufPtr);

}

}

http://blog.csdn.net/zswang/article/details/1576495

时间: 2024-10-15 05:26:45

枚举当前系统用户(使用NetUserEnum API枚举)的相关文章

用Windows Native API枚举所有句柄及查找文件句柄对应文件名的方法

枚举所有句柄的方法 由于windows并没有给出枚举所有句柄所用到的API,和进程所拥有的句柄相关的只有GetProcessHandleCount这个函数,然而这个函数只能获取到和进程相关的句柄数,不能获取到实际的句柄,要获得句柄,我们必须使用未公开的Native API才可以. PS:网上有很多关于这类的方法,但几乎都是抄来抄去,很多连编译都过不了就直接放上去了(囧).我整理了一下方法,实测在win10和win7都可以用. NTSTATUS WINAPI NtQuerySystemInform

即时聊天IM之二 openfire 整合现有系统用户

合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:[email protected]  综述: 每天利用中午时间更新下这个知识点的的博客如果感兴趣的觉得更新慢了也别介意(其它时间还是以工作为主,学习工作两不误,哈哈……).上一篇我纯理论上简单讲解了一下XMPP协议,然而现在用的比较多的XMPP协议服务器当然是openfire最为流行(我感觉).至于如何搭建oprenfire 二次开发环

Linux统系统开发11 Socket API编程2 多进程 多线程 高并发处理

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <纲要> Linux统系统开发11 Socket API编程2 多进程 多线程 高并发处理 UDP服务器 客户端最小模型,处理字符转大写 TCP 多进程并发服务器模型,为每个客户端开启一个进程: TCP 多线程服务器模型,使用wrap函数封装 作业: ---------------------------------------------------- UDP服务器 客户端最小模型,处理字符转大写 [em

Linux统系统开发12 Socket API编程3 TCP状态转换 多路IO高并发select poll epoll udp组播 线程池

[本文谢绝转载原文来自http://990487026.blog.51cto.com] Linux统系统开发12 Socket API编程3 TCP状态转换 多路IO高并发select  poll  epoll udp组播 线程池 TCP 11种状态理解: 1,客户端正常发起关闭请求 2,客户端与服务端同时发起关闭请求 3,FIN_WAIT1直接转变TIME_WAIT 4,客户端接收来自服务器的关闭连接请求 多路IO转接服务器: select模型 poll模型 epoll模型 udp组播模型 线

二次开发Jumpserver,增加权限申请模块实现用户组归属,服务器及组授权,系统用户授权申请处理

这是jumpserver二次开发系列第三篇,主要实现用户权限的自主申请.审批和授权功能.有两种方式申请权限: 1.加入用户组,拥有与该用户组相同的权限: 2.按资产.资产组及系统用户申请相应权限. 一.数据库模型设计 其中用户.用户组.资产.资产组及系统用户为原来各模块已设计的表 二.model代码 权限申请表与用户.用户组.资产.资产组及系统用户使用ManyToManyField定义关系 class Checker(models.Model): checker_um = models.Char

二次开发Jumpserver实现主备,实现user&amp;key,系统用户&amp;key的同步

这是jumpserver二次开发系列第三篇 ,前两篇是关于用户认证模块的,调用现有的认证接口认证并获取用户信息. 此篇是关于如何实现双机热备,要实现互备,就要确保用户及系统用户信息不只同步到另外一台数据库,还需要把用户及系统用户的秘钥信息同步到另外一台服务器,并创建用户,当然删除也需要同步. ps:在原代码基础上添加的代码,在每个代码框内用绿色背景斜体标记,否则为整体添加. 一.修改setting,增加server_type配置,从jumpserver.conf配置文件读取主备服务器信息. #

第2章 系统用户/组管理

2.1 用户和组的基本概念 用户和组是操作系统中一种身份认证资源. 每个用户都有用户名.用户的唯一编号uid(user id).所属组及其默认的shell,可能还有密码.家目录.附属组.注释信息等. 每个组也有自己的名称.组唯一编号gid(group id).一般来说,gid和uid是可以不相同的,但绝大多数都会让它们保持一致,大致属于约定俗成类的概念吧. 组分为主组(primary group)和辅助组(secondary group)两种,用户一定会属于某个主组,也可以同时加入多个辅助组.

Linux系统用户与组的基本命令

用户和组的管理主要是出于对人员的管理,在多用户多任务分时操作系统中:所有一个要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也能帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和用户密码.用户在登录时键入正确的用户名和密码后,才能进入系统和自己的主目录.用户和组的管理就是要对员工的账号进行不同程度的管理,一个用户属于什么组对应的使用这个组所

liunx系统用户迁移

很多企业在网站发布前,在linux测试机上测试服务,很多程序员用户目录也在linux测试机上测试程序.然而,随着项目的进行,出现了测试机卡死的状况.用df -h命令查看,结果吓一跳,根目录上资源占用竟然达到了100%,不卡死才怪呢,,,而其他磁盘挂载的目录空间几乎没有用!!! 怎么解决呢,首先通知所有用户,让他们删除自己工作目录中的那些没用的文件,效果还是有的,不一会就腾出了差不多6个G的空间...可惜好景不长,没过几天,再次卡死,这次还是来个彻底点的解决办法吧,迁移!!!方案如下: /home