首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

获取Windows中的本地计算机用户名列表

可以通过以下步骤实现:

  1. 使用Windows API函数NetUserEnum来获取本地计算机上的用户列表。NetUserEnum函数可以列出本地计算机上的所有用户账户。
  2. 在使用NetUserEnum函数之前,需要先初始化一个USER_INFO_0结构体,并将其传递给NetUserEnum函数。USER_INFO_0结构体包含了用户账户的基本信息,如用户名。
  3. 调用NetUserEnum函数时,需要指定参数level为0,表示获取基本的用户信息。另外,还需要指定参数filter为FILTER_NORMAL_ACCOUNT,以排除掉一些特殊账户,如系统账户和服务账户。
  4. NetUserEnum函数会返回一个指向USER_INFO_0结构体数组的指针,其中每个结构体代表一个用户账户。可以通过遍历这个数组来获取每个用户的用户名。

以下是一个示例代码,演示如何获取Windows中的本地计算机用户名列表:

代码语言:csharp
复制
using System;
using System.Runtime.InteropServices;

public class LocalUserManager
{
    [DllImport("Netapi32.dll", CharSet = CharSet.Unicode)]
    private static extern int NetUserEnum(
        string serverName,
        int level,
        int filter,
        out IntPtr userInfo,
        int prefMaxLen,
        out int entriesRead,
        out int totalEntries,
        out int resumeHandle);

    [DllImport("Netapi32.dll")]
    private static extern int NetApiBufferFree(IntPtr buffer);

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
    public struct USER_INFO_0
    {
        public string UserName;
    }

    public static string[] GetLocalUserNames()
    {
        const int NERR_Success = 0;
        const int MAX_PREFERRED_LENGTH = -1;
        const int FILTER_NORMAL_ACCOUNT = 0x0002;

        IntPtr userInfoPtr;
        int entriesRead, totalEntries, resumeHandle;

        int result = NetUserEnum(null, 0, FILTER_NORMAL_ACCOUNT, out userInfoPtr, MAX_PREFERRED_LENGTH,
            out entriesRead, out totalEntries, out resumeHandle);

        if (result != NERR_Success)
        {
            throw new Exception("Failed to retrieve local user names.");
        }

        string[] userNames = new string[entriesRead];
        IntPtr iter = userInfoPtr;

        for (int i = 0; i < entriesRead; i++)
        {
            USER_INFO_0 userInfo = (USER_INFO_0)Marshal.PtrToStructure(iter, typeof(USER_INFO_0));
            userNames[i] = userInfo.UserName;
            iter = (IntPtr)(iter.ToInt64() + Marshal.SizeOf(typeof(USER_INFO_0)));
        }

        NetApiBufferFree(userInfoPtr);

        return userNames;
    }
}

public class Program
{
    public static void Main()
    {
        try
        {
            string[] userNames = LocalUserManager.GetLocalUserNames();

            Console.WriteLine("Local User Names:");
            foreach (string userName in userNames)
            {
                Console.WriteLine(userName);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}

这段代码使用C#语言调用了NetUserEnum函数来获取本地计算机上的用户列表。通过调用LocalUserManager.GetLocalUserNames()方法,可以获取到一个包含所有本地用户账户的字符串数组。然后,可以将这些用户名打印出来或进行其他操作。

腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Python如何获取列表重复元素索引?

    一、前言 昨天分享了一个文章,Python如何获取列表重复元素索引?,后来【瑜亮老师】看到文章之后,又提供了一个健壮性更强代码出来,这里拿出来给大家分享下,一起学习交流。...= 1] 这个方法确实很不错,比文中那个方法要全面很多,文中那个解法,只是针对问题,给了一个可行方案,确实换个场景的话,健壮性确实没有那么好。 二、总结 大家好,我是皮皮。...这篇文章主要分享了Python如何获取列表重复元素索引问题,文中针对该问题给出了具体解析和代码演示,帮助粉丝顺利解决了问题。...最后感谢粉丝【KKXL螳螂】提问,感谢【瑜亮老师】给出具体解析和代码演示。

    13.3K10

    如何在 WordPress 获取最新被评论文章列表

    我之前「WordPress 文章查询教程6:如何使用排序相关参数」详细介绍了文章查询排序参数,其中介绍可以通过评论数进行排序: $query = new WP_Query( array(...'orderby' => 'comment_count' ) ); 但是需求总是不停变化,现在又有了新需求,获取最新被评论文章列表,意思就是某篇文章刚被评论,它就排到最前面,在某些社交需求网站可能需要用到...但是使用 SQL 来实现可能就会造成 API 不一致问题,无法直接使用 WP_Query 进行各种操作,所以最好是通过 posts_clauses 接口实现让 WP_Query 排序参数支持 comment_date...$order}"; } return $clauses; }, 10, 2); 上面的代码简单解释一下,就是通过 posts_clauses 接口实现文章表和评论表连表,然后通过评论时间进行排序获取最新被评论文章列表...当然你也可以不需要了解和使用上面的代码,因为 WPJAM Basic 已经整合,你只需要知道最后可以通过下面简单方式就能够获取最新被评论文章列表: $query = new WP_Query( array

    1.5K30

    Windows server 2008 拒绝共享资源用户本地登录

    有时服务器打印机或文件需要共享,这时我们可以在本地用户和组中新建一个用户,局域网内其他人可通过这个用户帐户来共享打印机,这时问题出现了,任何人掌握了这个帐户就可以用这个帐户在本地登录你电脑,这确实很危险...之所以如此,是因为在windows server 2008,只要新建一个用户,就默认该用户具有本地登录权限,为了安全起见,如果不打算使用于共享文件或打印机用户可以本地登录,就需要在新建这类用户后,...进行适当权限设置进行限制。...具体方法如下: 单击“管理工具-本地安全策略”,在本地安全策略窗口左栏内单击“本地策略-用户权限分配”,在右栏内找到“拒绝本地登录”项,双击,在出现窗口中单击“添加用户或组”,再单击“高级”,在后续操作步骤中选择上述用户...以上情形对windows server 2003同样适用。 (adsbygoogle = window.adsbygoogle || []).push({});

    1.1K30

    LinuxStack Clash漏洞,可被黑客利用获取本地root权限

    上个月,Qualys安全研究人员在多种基于Unix系统上发现名为“Stack Clash”漏洞,该漏洞能让攻击者在UNIX系统上获得root权限,并接管这台受到攻击计算机。...什么是Stack Clash漏洞 这个问题主要涉及内存栈概念:栈内存是应用程序在计算机 RAM 执行代码内存区域。而随着应用程序越变越大,内存区域也“水涨船高”。...应用程序栈内存接触到堆内存时,如果攻击者可以注入某些数据然后操作堆内存存储信息,他就可以覆盖部分堆栈并劫持应用程序执行流,相应地,甚至还可以接触到更重要数据结构。...后续研究 当然目前要实现这种攻击的话,攻击者需要本地访问,远程攻击方法还不清楚。现在利用这个漏洞攻击方法是经典权限提升(EoP)漏洞。...如果用户无法更新,操作系统所有者可以将本地用户和远程服务 RLIMIT_STACK 和 RLIMIT_AS 设置为低一些数值。

    1.9K60

    OPC DCOM详细配置方法 - 不关防火墙不换登陆用户

    图表 7 本地安全策略   在“本地安全策略”对话框,展开(鼠标左键双击)左侧“本地策略” -> “安全选项”项,在右侧列表,找到“网路访问:本地账户共享和安全模型”,将其更改为“经典 – 对本地用户进行身份验证...“访问权限” – “编辑限制”对话框 确保Everyone、opcuser和ANONYMOUS LOGON三个用户都被添加到“组或用户名列表,并且上述三个用户本地访问”和“远程访问”都被允许。...“访问权限” – “默认访问权限” 确保SYSTEM、opcuser都被添加到“组或用户名列表,并且上述账户本地访问”和“远程访问”都被允许。...“启动和激活权限”- “编辑限制” 确保Everyone、opcuser用户被添加到“组和用户名列表,并且“本地启动”、“远程启动”、“本地激活”和“远程激活”都被允许。...“启动和激活权限”- “编辑默认值” 确保opcuser、INTERACTIVE和SYSTEM用户被添加到“组和用户名列表,并且“本地启动”、“远程启动”、“本地激活”和“远程激活”都被允许。

    41010

    渗透测试 | 内网信息收集

    一般域内主机补丁都是批量安装,通过查看本地计算机补丁列表,可以找到未打补丁漏洞,当前更新了2个补,如下图所示 Systeminfo ?...3、psloggedon.exe 在Windows,可以使用命令“net session”查看谁在本地计算机上使用了资源,但是没有命令用来查看谁在使用远程计算机资源、谁登录了本地或远程计算机。...psloggedon.exe可以显示本地登录用户和通过本地计算机或远程计算机资源登录用户。...Username:指定用户名,在网络搜索该用户登录计算机。...如果指定了用户名(DOMAIN\Username),则显示该用户登录计算机。 -last [''username'']:如果仅指定了-last 参数,将获取目标计算机最后一个登录用户。

    3.1K20

    使用远程登录软件登录 Linux 实例

    本文以 PuTTY 软件为例,介绍如何在 Windows 系统本地计算机中使用远程登录软件登录 Linux 实例。...适用本地操作系统 Windows 说明 如果您本地计算机为 Linux 或者 MacOS 操作系统,请 使用 SSH 登录 Linux 实例。...请确认本地计算机与实例之间网络连通正常,以及实例防火墙已放行22端口(创建实例时默认已开通22端口)。...如下图所示: 参数举例说明如下: Host Name(or IP address):轻量应用服务器公网 IP(登录 轻量应用服务器控制台,可在服务器列表获取公网 IP)。...如下图所示: Host Name (IP address):轻量应用服务器公网 IP(登录 轻量应用服务器控制台,可在服务器列表获取公网 IP)。

    22610

    《内网安全攻防》学习笔记,第二章-域内信息收集

    在一个域中,当计算机加入域后,会默认给域管理员组赋予本地系统管理员权限。也就是说,在计算机添加到域中,成为域成员主机后,系统会自动将域管理员组添加到本地系统管理员组。...Username:指定用户名,在网络搜索该用户登录计算机。 ?...如果指定了用户名(DOMAIN\Username),则显示该用户登录计算机。 -last [''username'']:如果仅指定了-last 参数,将获取目标计算机最后一个登录用户。...如果指定了用户名(DOMAIN\Username),则显示具有此用户账户作为上次登录计算机。根据网络策略,可能会隐藏最后一个登录用户名,且该工具可能无法得到该用户名。...它接收用户名、用户列表或域组查询,并接收一个主机列表或查询可用主机域名。

    5.1K43

    内网学习笔记 | 4、域内信息收集

    5、定位域管理员 psloggedon 在 Windows 上使用 net session 可以查看谁使用了本机资源,但不能查看谁在使用远程计算机资源、谁登录了本地或远程计算机,使用 psloggedon...可以查看本地登录用户和通过本地计算机或远程计算机进行资源登录用户。...\\computername 指定要列出登录信息计算机名称。 Username 指定用户名,在网络搜索该用户登录计算机。...Invoke-UserHunter:找到域内特定用户群,接受用户名、用户列表和域组查询,接收一个主机列表或查询可用主机域名。...: 获取域默认策略或域控制器策略 Invoke-UserHunter: 获取域用户登陆计算机信息及该用户是否有本地管理员权限 Invoke-ProcessHunter: 通过查询域内所有的机器进程找到特定用户

    3.4K20

    net命令解析与实例使用

    删除映射对方到本地为H:映射 WeiyiGeek. user #添加用户或者更改系统登陆密码 net user 用户名 密码 #添加或修改用户 net user 用户名 密码 /add #添加用户...{/ADD | /DELETE} [/DOMAIN] #参数解释: groupname:指需要添加、扩充或删除名称。只要给出组名就可以浏览该组用户列表 username[ ...]...:列出一个或多个需要从一个组添加或删除用户名。可以用空格来将多个用户名分隔开 /COMMENT:"text":为一个新或已存在组添加注释。...否则在本地计算机上执行该操作 /ADD 添加一个组,或将一个用户名添加到一个组 /DELETE 删除一个组,或将一个用户名从一个组删除 基础实例: #要将组 Exec 添加到本地用户帐户数据库:...例如:创建一个普通用户hanjiangit,把该用户加入“Users(本地组)”则只能在本地计算机上使用, 如果把hanjiangit加入“Domain Users(全局组)”,则该用户就可以在全域中使用

    99320

    net命令解析与实例使用

    administrators 用户名 /add #将用户添加进组 net user guest /active:yes #激活管理 localgroup 描述:”本地组”则只能在本地计算机上使用...{/ADD | /DELETE} [/DOMAIN] #参数解释: groupname:指需要添加、扩充或删除名称。只要给出组名就可以浏览该组用户列表 username[ ...]...:列出一个或多个需要从一个组添加或删除用户名。可以用空格来将多个用户名分隔开 /COMMENT:"text":为一个新或已存在组添加注释。...否则在本地计算机上执行该操作 /ADD 添加一个组,或将一个用户名添加到一个组 /DELETE 删除一个组,或将一个用户名从一个组删除 基础实例: #要将组 Exec 添加到本地用户帐户数据库:...例如:创建一个普通用户hanjiangit,把该用户加入“Users(本地组)”则只能在本地计算机上使用, 如果把hanjiangit加入“Domain Users(全局组)”,则该用户就可以在全域中使用

    2.6K41

    Windows Server 2008 用户管理

    一、用户账户概述: ”用户”是计算机使用者在计算机系统身份映射,不同用户身份拥有不同权限,每个用户包含一个名称和一个密码; 在Windows,每个用户帐户有一个唯一安全标识符(Security...Windows程序“自动添加”;Windows会根据用户状态来决定用户所属组;组内成员也随之动态变化,无法修改。...USER] [/GROUPS] [/CLAIMS] [/PRIV] } [/FO format] [/NH] 语法 3:WHOAMI /ALL [/FO format] [/NH] 描述: 这个工具可以用来获取本地系统上当前用户...(访问令牌)用户名和组信息,以及相应安全标识符(SID)、声明、本地系统上当前用户权限、登录标识符(登录 ID)。...例如,谁是当前已登录用户、用户名。 参数列表: /UPN :用用户主体 (User Principal) 格式显示用户名名称 (UPN)格式。

    3.6K120

    windows用户和组

    计算机存有一个叫SAM数据库,当用户输入账号密码之后会与SAM数据密码进行验证,SAM路径为: C:\Windows\System32\config\SAM 对应进程:lsass.exe...Windows 2000 内部进程将引用帐户 SID 而不是帐户用户或组名。...SID作用 用户通过验证后,登陆进程会给用户一个访问令牌,该令牌相当于用户访问系统资源票证,当用户试图访问系统资源时,将访问令牌提供给 Windows NT,然后 Windows NT 检查用户试图访问对象上访问控制列表...如果用户被允许访问该对象,Windows NT将会分配给用户适当访问权限。 访问令牌是用户在通过验证时候有登陆进程所提供,所以改变用户权限需要注销后重新登陆,重新获取访问令牌。...查看当前用户SID: ? SAM账户匿名枚举 windows默认安装允许任何空用户得到系统所有账号和共享列表

    2.9K20
    领券