首页
学习
活动
专区
工具
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.4K21

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

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

1.1K20

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.3K20

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

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

2.2K80

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

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

1.3K90

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

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

41731

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.3K21

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

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

1.3K30

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

WMI讲解(是什么,做什么,为什么) 讲在前面 作者:pingpig@深蓝攻防实验室 WMI笔者所参与项目中发现目前攻防中利用依旧非常频繁,尤其横向移动中,利用wmic或者powershell...WMI什么 简介: WMI是WindowsPowershell还未发布前,微软用来管理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.1K10

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

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

1K40

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 设计者 ● 一文讲透微服务如何保证事务一致性 ● 要黑盒测试微服务内部服务间调用

70621

进攻性横向移动

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

2.1K10

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

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

4.6K30

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

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

1.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.3K40

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

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

1.2K40

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

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

38430
领券