要实现一个监听 Windows 事件的 Windows 服务并调用 Webhook,可以按照以下步骤进行:

  1. 创建一个 Windows 服务项目。打开 Visual Studio,选择“新建项目”,在“Visual C#”下选择“Windows 服务”,输入项目名称并选择保存路径,然后点击“创建”。

  2. 在服务代码中添加对 Windows 事件日志的监听。在服务项目的“Program.cs”文件中,添加以下代码:

using System.Diagnostics.Eventing.Reader;

static void Main(string[] args)
{
    using (var eventLogWatcher = new EventLogWatcher(new EventLogQuery('System', PathType.LogName, '*[System/EventID=51 or System/EventID=133]'))) 
    {
        eventLogWatcher.EventRecordWritten += (sender, eventArgs) => 
        {
            // 发现 EventID=51 或 133 的事件,则调用 Webhook
            if (eventArgs.EventRecord.Id == 51 || eventArgs.EventRecord.Id == 133) 
            {
                // 调用 Webhook 的代码
                // ...
            }
        };
        eventLogWatcher.Enabled = true;

        // 等待服务停止信号
        var quitEvent = new ManualResetEvent(false);
        Console.CancelKeyPress += (sender, eventArgs) =>
        {
            eventArgs.Cancel = true;
            quitEvent.Set();
        };
        quitEvent.WaitOne();
    }
}

该代码使用了 Windows 事件日志的查询功能,通过查询“System”日志中“EventID”为 51 或 133 的事件来监听 Windows 事件。当发现符合条件的事件时,调用 Webhook。

  1. 编写 Webhook 调用代码。在发现符合条件的事件时,需要调用 Webhook 发送信息。可以使用 .NET Core 中的 HttpClient 类来实现。以下是一个简单的 Webhook 调用代码:
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

public static async Task CallWebhookAsync(string url, string message)
{
    using (var client = new HttpClient())
    {
        var content = new StringContent(message, Encoding.UTF8, 'application/json');
        var response = await client.PostAsync(url, content);
        if (!response.IsSuccessStatusCode)
        {
            throw new Exception($'Webhook 调用失败,状态码:{response.StatusCode},响应内容:{await response.Content.ReadAsStringAsync()}');
        }
    }
}
  1. 将 Webhook 调用代码添加到服务代码中。在服务代码中,当发现符合条件的事件时,调用 Webhook:
// 调用 Webhook 的代码
await CallWebhookAsync('https://example.com/webhook', '{ 'event': 'WindowsEventDetected' }');
  1. 编译并安装 Windows 服务。在 Visual Studio 中,选择“生成”菜单,然后选择“生成解决方案”。编译完成后,在 Windows 服务管理器中选择“安装服务”,选择生成的服务程序 exe 文件,然后点击“确定”安装服务。

  2. 启动服务并测试。在 Windows 服务管理器中选择刚刚安装的服务,然后点击“启动”按钮启动服务。当 EventID 为 51 或 133 的 Windows 事件被触发时,服务将会自动调用 Webhook。可以在 Webhook 目标地址中查看是否收到了调用请求。

如何用.NET Core 构建 Windows 服务监听事件并调用 Webhook

原文地址: https://www.cveoy.top/t/topic/n27K 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录