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

WMI -它到底是如何工作的?什么在创建WmiApSrv.exe服务,它是如何分派消息的?

WMI(Windows Management Instrumentation)是一种用于管理和监控Windows操作系统的技术。它提供了一种标准化的方式来访问和操作Windows操作系统的各种管理信息,包括硬件、软件、网络等方面的信息。

WMI的工作原理是通过提供一组标准化的API接口,允许开发人员和系统管理员使用各种编程语言(如C++、C#、PowerShell等)来查询和修改Windows操作系统的管理信息。WMI使用一种称为WQL(WMI Query Language)的查询语言来执行查询操作,类似于SQL语言。

在创建WmiApSrv.exe服务时,WMI会启动该服务来处理与WMI相关的请求和操作。WmiApSrv.exe是WMI服务的主要组件,它负责接收来自客户端的请求,并将这些请求分派给相应的WMI提供程序进行处理。

WMI提供程序是一组实现了WMI接口的组件,它们负责提供特定类型的管理信息。当WmiApSrv.exe接收到一个请求时,它会根据请求的类型和目标信息,选择合适的WMI提供程序来处理该请求。WMI提供程序可以是系统内置的,也可以是第三方开发的。

WMI提供了丰富的管理信息,可以用于各种场景,例如系统监控、性能分析、软件部署、远程管理等。以下是一些常见的应用场景和相关的腾讯云产品:

  1. 系统监控和性能分析:通过WMI可以获取系统的各种性能指标和状态信息,如CPU使用率、内存占用、磁盘空间等。腾讯云的云监控产品(https://cloud.tencent.com/product/monitoring)可以帮助用户实时监控和分析云服务器的性能。
  2. 软件部署和配置管理:WMI可以用于远程执行命令和脚本,实现软件的自动部署和配置管理。腾讯云的云服务器(https://cloud.tencent.com/product/cvm)提供了灵活的云主机资源,可以用于托管和管理应用程序。
  3. 远程管理和故障排除:通过WMI可以实现对远程计算机的管理和故障排除,如远程执行命令、查询系统日志、重启服务等。腾讯云的云服务器提供了远程登录和管理功能,可以方便地进行远程操作。

总结:WMI是一种用于管理和监控Windows操作系统的技术,通过提供标准化的API接口和查询语言,允许开发人员和系统管理员访问和操作Windows操作系统的管理信息。WMI通过WmiApSrv.exe服务接收和分派请求,并通过WMI提供程序提供各种管理信息。腾讯云的云监控、云服务器等产品可以与WMI结合使用,实现系统监控、软件部署和远程管理等功能。

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

相关·内容

你知道,我是怎样监控你所有打开EXE的吗

A 技术应用背景: 目前已知在杀毒厂商以及游戏厂商的安全对抗过程中,常常需要准确的监控收集并进行检测用户创建打开的EXE应用程序是否是安全的。同时也可以将此技术应用于其他应用的安全对抗方案中。...--- WMI相关概念 1.WBEM它的全称:Web Based Enterprise Management(基于web的企业管理),它是一种行业规范,建立在企业网络中访问和共享管理信息的标准。...在系统启动时,WMI服务会创建例如root\cimv2、root\default、root\subscription等等命名空间。...WMI服务扮演着WMi提供者、管理应用和WMI存储库之间的协调者角色。一般来说,它是通过一个共享的服务进程svchost来实施工作的。当第一个管理应用向WMI命名空间发起连接时,WMI服务将会启动。...当管理应用不再调用WMI时,WMI服务将会关闭或者进入低内存状态。 ? 3.WMI Consumers(WMI使用者) 它位于WMI构架的最顶层,它是WMI技术使用的载体。

1.6K21

WMI技术介绍和应用——事件通知

再具体一点就是,我们可以使用WMI检测进程创建、服务状态变化、电脑状态变化,磁盘可用空间变化等信息。...介绍了这么多基础知识了,那如何查询事件通知呢?在《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中,我们讲解WMI查询静态数据时,我们可以使用同步查询和半同步查询两种查询方式。...永久事件使用者是一种更复杂的使用者——它是一个COM对象,用于持续接收WMI事件通知。它使用一些现有的对象和过滤器去获取WMI事件。我们可以设置一些WMI对象和过滤器去获取WMI事件。...当一个事件发生,并命中过滤器,WMI将加载永久事件使用者并通知它某事件发生了。或许你会有点好奇,永久事件使用者是保存在什么地方?WMI又是如何找到它的?...永久事件使用者是保存在WMI仓库中(上图2层中WMI repository),并且是一个在WMI中注册的可执行文件,这样WMI便可以方便的寻找和加载它了。

1.3K20
  • WMI技术介绍和应用——WMI概述

    可能有人要问,为什么不让设计的脚本直接在底层使用Windows API,而非要弄个新的技术呢?原因是在目前Windows API中,有些是不支持远程调用或者脚本调用的。...在之后的应用例子中,我将先介绍相对简单点的“获取信息”,然后再讲解稍微复杂点的“提供数据”。为什么说“获取信息”相对简单?我们就先看下WMI的构架图,下图来源为MSDN ?        ...在系统启动时,WMI服务会创建诸如root\default、root\cimv2和root\subscription等WMI命名空间,同时会预安装一部分WMI类的定义信息到这些命名空间中。...其他命名空间是在操作系统或者产品调用有关WMI提供者(WMI Provider)时才被创建出来的。简而言之,WMI存储库是用于存储WMI静态数据的存储空间。...之后,我们将优先介绍访问WMI存储库来获取有用的信息。 WMI服务扮演着WMi提供者、管理应用和WMI存储库之间的协调者角色。一般来说,它是通过一个共享的服务进程SVCHOST来实施工作的。

    2.5K20

    面向服务架构(SOA)和企业服务总线(ESB)

    根据维基百科的ESB定义,ESB有如下特性: 它是面向服务架构的实现。 它通常是操作系统和编程语言无关的;它应能在Java和.Net应用程序之间工作。...它包含转换服务(通常是使用XSLT),在发送应用和接收应用之间转换格式,简化数据格式和值的转换。 它包含基于模式(schema)的验证,用于发送和接收消息。...它支持队列,在应用临时不可用时用来保存消息。...同时,该框架也提供了一些可伸缩的关键特征,比如对发布/订阅的支持、集成的长时间工作流及深入的扩展能力等。据作者说,其本意是为构建分布式应用软件创建一个理想的基础设施。...通过一套严密的关注点,Mass Transit和应用程序之间的接触最小化和清晰的接口. 相关资料: [1] ESB这个词到底是什么意思?

    2.5K80

    使用“消息服务框架”(MSF)实现分布式事务的三阶段提交协议(电商创建订单的示例)

    1,示例解决方案介绍 在上一篇 《消息服务框架(MSF)应用实例之分布式事务三阶段提交协议的实现》中,我们分析了分布式事务的三阶段提交协议的原理,现在我们来看看如何使用消息服务框架(MSF)来具体实现并且看用它来实现的一些优势...在本示例中,使用的是电商系统最常见的业务场景:下单业务,它的业务流程也概括起来比较简单: 创建订单: 生成订单基本信息; 生成订单项目明细(已购商品清单): 检查库存是否足够 扣减库存  当然,在具体的电商业务系统中...下面是这4个服务在创建订单的业务流程图: ?...2.3,分布式事务中的微服务容器 在本例中,我们使用消息服务框架(MSF)来实现分布式事务,为了更加真实的模拟微服务架构,我们将创建订单相关的服务划分为3个独立的进程,这些进程就是MSF.Host服务容器...,然后在它里面执行具体的本地事务操作。

    1.4K90

    面试时说Redis是单线程的,被喷惨了!

    意志不坚定的,可能就缴械投降,顺着别人走了。 到底是什么样的,各位看官请跟小莱一起往下看: ?...涉及到 Redis 线程它是一个绕不过去的话题。 1、传统阻塞IO模型 在讲反应器模式前,这里有必要提一下传统阻塞IO模型的处理方式。...你看这样的方式,每来一个请求就要分配一个线程,并且还得阻塞地等线程处理完。有的请求还只是过来连接下,什么操作也不干,还得为它分配一个线程,对服务器资源要求那得多高啊。遇到高并发场景,不敢想象。...当有客户端接入时,将客户端的请求封装成一个 task 投递到后端线程池中来处理。线程池维护一个消息队列和多个活跃线程,对消息队列中的任务进行处理。 ?...上边已经提到过 Redis 单线程处理有着很快的速度,那为什么还要引入多线程呢?单线程的瓶颈在什么地方? 我们先来看第二个问题,在 Redis 中,单线程的性能瓶颈主要在网络IO操作上。

    44431

    WMI 攻击手法研究 – 基础篇 (第一部分)

    什么是 WMI 让我们快速回顾一些重要术语,WMI 是 Windows Management Instrumentation 的缩写,它是 Microsoft 对 CIM (Common Information...WMI 体系架构 了解体系架构对于了解整个 WMI 生态系统的工作方式非常重要,WMI 架构如下所示 (源于 Graeber 在 BHUSA 15 的演讲): 让我们来逐一了解主要组件: Clients...Query Languages:就像 SQL 提供查询数据库的方法一样,WMI 也有用于查询 WMI 服务的 WQL (WMI 查询语言) / CQL。...在本系列的后续部分中,我们将了解如何编写自己的 MOF 文件来扩展 WMI 功能集。...从 PowerShell v3 开始,MS 引入了 CIM cmdlet,它利用 WS-MAN 和 CIM 标准来管理对象,访问 CIM cmdlet 在两种情况下具有优势: 在 WMI/DCOM 本身被阻止运行

    1.4K21

    透过 Rust 探索系统的本原:泛型

    它是个非常强大的工具。 但这样给编译器出了一个难题:编译器在编译时如何得知 reader 可以执行 read() 操作呢? 不能。...这就是动态分派(dynamic dispatching)。 Trait Object 虽然是 Rust 独有的概念,但这个概念并不新鲜。我们看看它的实现机理。...对于不同语言如何实现静态分派和动态分派,下面这个流程图表述地非常清楚,大家可以仔细研读一下。如果你读懂了这幅图,那么你对泛型函数的了解就足够清晰了: ?...我们再看一个例子:客户端和服务器间通过 protobuf 来传递消息,两端约定消息的头四个字节是 protobuf 的长度,之后是 protobuf。...至于消息收发时底层的传输机制是什么,我们尽量不去关心;而上层究竟会传递什么样的消息,也不去关心。

    1.2K40

    Julia机器核心编程.多重分配

    在开始深入探讨多重分派这个主题之前,我们先问自己一个简单的问题:分派到底是什么意思?用最简单的术语来解释,分派的意思就是发送! 在编程术语中,分派意味着向监听器发送一条消息或者调用一个函数。...基本上就是将一段数据(或信息包)发送给准备用来处理它的代码。 分派有多种不同的类型,下面列举出其中的一部分: • 静态分派:在编译时定义分派的顺序。...Julia支持多重分派,下面探讨Julia是如何实现此技术的。...方法是Julia生态系统中非常重要的一部分,为了更好地理解多重分派是什么,以及Julia使用多重分派的原因,我们首先需要知道方法是什么。 假设有一个对两个数字求和的函数。范例如下: ?...这似乎与Python中的函数用法非常相似,在Python中我们只是定义函数,并没有指定参数的类型,而是将推理参数类型的工作留给了Python解释器来做,Julia在这里所做的工作和Python解释器是一样的

    1.1K20

    一文读懂Redis中的多路复用模型

    阻塞IO 先来看一下传统的阻塞 I/O 模型到底是如何工作的:当使用 read 或者 write 对某一个文件描述符(File Descriptor 以下简称 FD)进行读写时,如果当前 FD 不可读或不可写...这也就是传统意义上的,也就是我们在编程中使用最多的阻塞模型: ? 在这种 IO 模型的场景下,我们是给每一个客户端连接创建一个线程去处理它。...这个文件事件处理器,它是单线程的,所以 Redis 才叫做单线程的模型,它采用IO多路复用机制来同时监听多个Socket,根据Socket上的事件类型来选择对应的事件处理器来处理这个事件。...这样,就无需遍历成千上万个消息列表了,直接可以定位哪个socket有数据。 那么,这是如何实现的呢?...● 漫谈设计模式在 Spring 框架中的良好实践 ● 颠覆微服务认知:深入思考微服务的七个主流观点 ● 人人都是 API 设计者 ● 一文讲透微服务下如何保证事务的一致性 ● 要黑盒测试微服务内部服务间调用

    92221

    WMI技术介绍和应用——查询系统信息

    本文使用了《WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类》中代码做为基础。本节只是列出了WQL语句,具体使用参看前面的例子。...如果我们想知道本次电脑的启动方式,就可以使用这个方法查询到。同时,我们可以由此推断,在安全模式下,WMI也是可以使用的。 如何使用WMI查询当前系统所属的域?...我们在公司的环境下登录某个特定的环境,这个环境可能属于某个域。如果当前系统不在任何域中,则这个查询将返回工作组(WorkGroup)名字。那怎么辨别呢,我们看下面一个查询。...如果通过对PartOfDomain的查询得出FALSE的答案,则可以查询Workgroup字段,查看该系统属于哪个工作组。 如何使用WMI查询当前系统属于域或工作组中属于什么角色?...结合以上信息,可以知道我电脑是Dell的OptiPlex 780。如果是组装电脑,该条数据将返回主板型号。         如何使用WMI查询当前系统的是否开启了网络服务模式?

    1.4K30

    WMI讲解(是什么,做什么,为什么)

    WMI的讲解(是什么,做什么,为什么) 讲在前面 作者:pingpig@深蓝攻防实验室 WMI在笔者所参与的项目中发现目前攻防中利用依旧非常频繁,尤其在横向移动中,利用wmic或者powershell...WMI是什么 简介: WMI是Windows在Powershell还未发布前,微软用来管理Windows系统的重要数据库工具,WMI本身的组织架构是一个数据库架构,WMI 服务使用 DCOM(TCP...在系统启动时,WMI服务会创建诸如root\default、root\cimv2和root\subscription等WMI命名空间,同时会预安装一部分WMI类的定义信息到这些命名空间中。...其他命名空间是在操作系统或者产品调用有关WMI提供者(WMI Provider)时才被创建出来的。简而言之,WMI存储库是用于存储WMI静态数据的存储空间。...WMI服务扮演着WMi提供者、管理应用和WMI存储库之间的协调者角色。一般来说,它是通过一个共享的服务进程Svchost来实施工作的。当第一个管理应用向WMI命名空间发起连接时,WMI服务将会启动。

    1.3K10

    进攻性横向移动

    那里有几种不同的横向移动技术,我将尝试从高层次的概述中介绍大的以及它们如何工作,但在介绍这些方法之前,让我们澄清一些术语。 命名管道:一种进程通过 SMB (TCP 445) 相互通信的方式。...它首先通过 SMB 连接到目标上的 ADMIN$ 共享,上传 PSEXESVC.exe 并使用服务控制管理器启动在远程系统上创建命名管道的 .exe,最后使用该管道进行 I/O。...这样做的问题是它创建了一个服务并运行了一个 base64 编码的命令,这是不正常的,会引发各种警报并生成日志。...它不会将 DLL 放到磁盘或任何东西上,所以从蓝队的角度来看,如果 rundll32.exe 在没有参数的情况下运行,这是非常可疑的。 SC 服务控制器正是它听起来的样子——它控制服务。...image.png image.png 所以我们看到,即使通过 WMI,尽管 wmic.exe 能够通过 Powershell 在目标上运行命令,但仍会创建命名管道,那么为什么首先要创建命名管道呢

    2.2K10

    「领域驱动设计」DDD,六边形架构,洋葱架构,整洁架构,CQRS的整合架构

    一个是SaaS的e-com平台,在全球拥有数千个网络商店,另一个是市场,在两个国家都有一个消息总线,每个月处理超过2000万条消息。...此外,端口和适配器体系结构明确标识了系统中的三个基本代码块: 是什么使得运行一个用户界面成为可能,不管它是什么类型的用户界面; 系统业务逻辑,或应用程序核心,由用户界面使用,以实际使事情发生; 基础构架代码...它可能使用多个用户界面(渐进式web应用程序、移动应用程序、CLI、API等),但是实际执行工作的代码是相同的,并且位于应用程序内核中,不管什么UI触发它,都应该是一样的。...要使此模式正常工作,最重要的是创建适合应用程序核心需求的端口,而不是简单地模仿工具api。 主适配器或驱动适配器 主适配器或驱动适配器围绕一个端口,并使用它来告诉应用程序核心要做什么。...但是类到底是如何组合在一起的呢?哪些取决于哪些?我们如何组合它们?

    2K30

    内网渗透的步骤_内网渗透思路

    内网相关概念这里不再进行介绍,大家可以自行百度,诸如什么是域、域与工作组的区别、什么是DC、什么是AD等。当然,概念是生涩难懂的,结合实际环境会有助于理解。...某内网靶场的详细教程:Vulnstack(一) 内网渗透过程中经常会涉及到内网穿透,如何理解内网穿透以及端口转发、端口映射等相关知识可以参考:如何从零构建对内网穿透的理解 实操部分写的比较草率,主要是为了增强认知...通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。...它一般用于局域网中,因为它要求客户端必须具有访问服务器资源的权限(SMB协议)。...简单来说,咱们在cmd或者powershell中使用的命令行语言,就是WMI支持的,它提供给我们一个接口如powershell,便于我们管理计算机。

    4.9K30

    使用Powershell 获取内网服务器信息和状态

    使用 WMI 类:因为有了使用 Get-Process 命令的经验,所以我们可以在不同的 Module 中找到不同的命令,例 如: 获取当前计算机中所有的服务信息 Get-Services 获取 Hyper-V...什么是 WMI 类? 为什么要使用 WMI 类 一个计算机的系统,它基本上包括了两个部分,软件和硬件,细分下来的话,硬件包括了 CPU,内存, 磁盘,网卡,显卡等,而软件包括了操作系统,应用程序。...所以接下来的问题就是 如何通过 WMI 类获取网卡信息; Powershell 如何调用 WMI 类。 WMI 类的组织形式,是一种层级结构,叫做命名空间,如下图 ?...你可以在命令行中运行 wmimgmt.msc 命令,打开WMI管理工具后,右键选择 WMI控制(本地)--属性,在 高级选项卡中,选择更改后,就能查看如上截图的 WMI 命名空间,最上层的名称为 Root...其实我们可以通过Powershell的方法来获取具体命令空间下的所有类,使用到命令为 Get-CimClass,它是由 CimCmdlets Module 提供的。

    2.4K40

    使用Go和RabbitMQ实现分布式事务

    RabbitMQ 是一个开源的消息代理和队列服务器,它允许应用程序通过共享服务或消息队列进行异步通信。...在创建这个对象时,需要提供一个连接字符串(URL),它包含了 RabbitMQ 服务器的地址、端口、用户名和密码。...当你设置为1时,意味着在一个消费者处理完一个消息并且对该消息进行了确认前,不会分派新的消息给消费者。也就是说,消费者在同一时间只会处理一条消息。...如果设置为非零值,服务器将会试图保证在为消费者分派新消息之前,至少会有这么多字节的消息已经在消费者的网络缓冲区中。...RabbitMQ 服务器、如何创建 Channel 和 Queue,以及如何发送和接收消息。

    61130

    WMI技术介绍和应用——VC开发WMI应用的基本步骤

    但是各种语言对WMI的控制能力是不同的,比如脚本语言只能用来从WMI获取数据或者接收事件通知。而C++还可以编写WMI提供者和发送消息。...和脚本语言相比,C++对WMI有强大的控制和定制性,当然也具有更大的复杂性。本文将主要讲述使用VC如何搭建一个使用WMI的框架。...COM服务器         我们应用中使用WMI完成相关功能,比如查询硬盘ID,实际执行查询的操作是在WMI服务中执行的,而不是我们的应用。...这样就要求我们应用和WMI服务进程有通信。在我们应用这边,就需要创建一个进程内COM服务器用于接发数据。...在我定义的类中,我将该步骤封装成一个纯虚函数Excute,继承CWMI的类将实现具体的工作。 清理          我们在使用完以上的代理和实例后,我们要释放它们,并且最后要释放COM库。

    1.3K40
    领券