LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#获取Windows Server服务器本机RDP远程桌面历史登录信息

admin
2025年2月14日 15:45 本文热度 596

在C#中获取本机的远程桌面历史登录信息通常涉及读取Windows事件日志。远程桌面服务登录信息通常记录在“Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational”日志中。你可以使用EventLog类来访问这些事件。

以下是一个示例代码,展示如何使用C#读取远程桌面服务的登录信息:

  • 首先,确保你的应用程序有足够的权限来读取事件日志。通常需要管理员权限。

  • ​使用EventLog类来查询特定的事件日志。

示例代码

using System;

using System.Diagnostics;

 

class Program

{

    static void Main()

    {

        string logName = "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational";

        EventLog eventLog = new EventLog(logName);

 

        try

        {

            // 打开事件日志

            eventLog.OpenExisting();

            

            // 获取事件条目

            EventLogEntryCollection entries = eventLog.Entries;

            foreach (EventLogEntry entry in entries)

            {

                if (entry.InstanceId == 1076) // ID 1076 表示用户登录事件

                {

                    Console.WriteLine("Event ID: " + entry.InstanceId);

                    Console.WriteLine("Time Generated: " + entry.TimeGenerated);

                    Console.WriteLine("User: " + GetUserFromMessage(entry.Message));

                    Console.WriteLine("Computer: " + GetComputerFromMessage(entry.Message));

                    Console.WriteLine();

                }

            }

        }

        catch (Exception ex)

        {

            Console.WriteLine("Error: " + ex.Message);

        }

        finally

        {

            if (eventLog != null) eventLog.Close();

        }

    }

 

    static string GetUserFromMessage(string message)

    {

        string pattern = "User Name: (\\S+)"; // 正则表达式匹配用户名

        var match = System.Text.RegularExpressions.Regex.Match(message, pattern);

        return match.Success ? match.Groups[1].Value : "Unknown";

    }

 

    static string GetComputerFromMessage(string message)

    {

        string pattern = "Client Address: (\\S+)"; // 正则表达式匹配计算机名或IP地址

        var match = System.Text.RegularExpressions.Regex.Match(message, pattern);

        return match.Success ? match.Groups[1].Value : "Unknown";

    }

}

说明:

  1. 权限:确保你的应用程序以管理员权限运行,或者以管理员身份配置应用程序的权限。

  2. 日志名称:"Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" 是记录远程桌面连接尝试的日志。

  3. 事件ID:ID 1076 对应于远程桌面服务中的用户登录事件。你可以根据需要调整这个ID来过滤特定类型的事件。

  4. 解析消息:通过正则表达式从事件消息中提取用户名和计算机名/IP地址。这需要你根据实际的事件消息格式调整正则表达式。

注意:

  • 确保你的系统上安装了适当的Windows更新,以便有这些特定的日志和事件ID。

  • 如果你的系统上没有显示这些日志,可能需要启用它们。可以通过组策略或本地安全策略来启用这些日志。在“本地安全策略”中,找到“高级审核策略”并确保“审核凭据验证”设置为“成功”。这将会记录远程桌面连接尝试的详细信息。


该文章在 2025/2/14 15:45:38 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved