CN116483483B - 数据查询方法、装置及电子设备 - Google Patents

数据查询方法、装置及电子设备 Download PDF

Info

Publication number
CN116483483B
CN116483483B CN202310742437.1A CN202310742437A CN116483483B CN 116483483 B CN116483483 B CN 116483483B CN 202310742437 A CN202310742437 A CN 202310742437A CN 116483483 B CN116483483 B CN 116483483B
Authority
CN
China
Prior art keywords
data
query
wmi
query request
service object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310742437.1A
Other languages
English (en)
Other versions
CN116483483A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nfs China Software Co ltd
Original Assignee
Nfs China Software Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nfs China Software Co ltd filed Critical Nfs China Software Co ltd
Priority to CN202310742437.1A priority Critical patent/CN116483483B/zh
Publication of CN116483483A publication Critical patent/CN116483483A/zh
Application granted granted Critical
Publication of CN116483483B publication Critical patent/CN116483483B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种数据查询方法及电子设备,方法应用于配置有Linux操作系统的电子设备中,电子设备的Linux操作系统中配置有Wine,Wine使得Linux操作系统上能够运行基于Windows操作系统构建的应用程序,方法包括:Wine中的WMI组件接收应用程序传输的数据查询请求;WMI组件根据数据查询请求,创建WMI服务对象;WMI服务对象用于:确定数据查询请求的查询类型;在数据查询请求属于本地查询类型的情况下,在电子设备上获得目标数据;在数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据;WMI组件将WMI服务对象获得到的目标数据传输给应用程序。

Description

数据查询方法、装置及电子设备
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据查询方法、装置及电子设备。
背景技术
Wine是一个能够在Linux操作系统上运行Windows应用程序的兼容层。在Wine中,WMI(Windows Management Instrumentation)是一个支持Windows管理的功能组件,它使得Windows应用程序能够通过WMI API(Application Programming Interface)调用系统信息集合。
但是,目前Wine还无法实现数据查询的方法,导致无法为用户的应用程序提供所需要的数据。
发明内容
有鉴于此,本申请提供一种数据查询方法、装置及电子设备,用于解决现有技术中的Wine无法实现数据查询的缺陷,如下:
一种数据查询方法,应用于配置有Linux操作系统的电子设备中,所述电子设备的Linux操作系统中配置有Wine,所述Wine使得所述Linux操作系统上能够运行基于Windows操作系统构建的应用程序,所述方法包括:
所述Wine中的WMI组件接收所述应用程序传输的数据查询请求;
WMI组件根据所述数据查询请求,创建WMI服务对象;
其中,所述WMI服务对象用于:
确定所述数据查询请求的查询类型;
在所述数据查询请求属于本地查询类型的情况下,在所述电子设备上获得目标数据;
在所述数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据;
所述WMI组件将所述WMI服务对象获得到的目标数据传输给所述应用程序。
上述方法,优选的,在所述WMI组件根据所述数据查询请求,创建WMI服务对象之前,所述方法还包括:
所述WMI组件解析所述数据查询请求,以得到所述数据查询请求中的查询信息;所述查询信息至少包括查询语句和至少一项信息项;所述信息项用于指示所需要的数据;所述查询语句为基于WQL的执行语句,且,在所述数据查询请求属于远程查询类型的情况下,所述查询信息中还包含连接信息;
所述WMI组件将所述查询信息保存在预设的链表中。
上述方法,优选的,所述WMI服务对象确定所述数据查询请求的查询类型,包括:
所述WMI服务对象在链表中查询是否存在连接信息;
如果所述链表中不存在连接信息,确定所述数据查询请求属于本地查询类型;
如果所述链表中存在连接信息,确定所述数据查询请求属于远程查询类型。
上述方法,优选的,在所述WMI组件解析所述数据查询请求,以得到所述数据查询请求中的查询信息之后,所述方法还包括:
在所述查询信息中还包含连接信息的情况下,所述WMI组件将所述数据查询请求发送给WMIC进程,以使得WMIC进程解析所述数据查询请求并根据所述数据查询请求中的连接信息建立与所述远程设备之间的数据连接,所述数据连接用于在所述电子设备与所述远程设备之间传输数据。
上述方法,优选的,所述WMI组件根据所述数据查询请求,创建WMI服务对象,包括:
所述WMI组件根据所述数据查询请求中的查询语句和至少一个信息项,创建WMI服务对象;
其中,在所述数据查询请求属于本地查询类型的情况下,所述WMI组件创建本地的WMI服务对象,所述本地的WMI服务对象在所述电子设备上获得目标数据;
在所述数据查询请求属于远程查询类型的情况下,所述WMI组件创建远程的WMI服务对象,所述远程的WMI服务对象在远程设备上获得目标数据。
上述方法,优选的,所述WMI服务对象在所述电子设备上获得目标数据,包括:
所述WMI服务对象在所述电子设备上的WMI提供程序上按照所述信息项执行所述查询语句,以得到目标数据。
上述方法,优选的,所述WMI服务对象在远程设备上获得目标数据,包括:
所述WMI服务对象把所述查询语句和所述信息项发送给WMIC进程,以使得所述WMIC进程将所述查询语句和所述信息项发送给远程设备的WMI提供程序,在所述远程设备的WMI提供程序上按照所述信息项执行所述查询语句,以得到目标数据;
所述WMI服务对象获得所述WMIC进程返回的所述目标数据。
上述方法,优选的,所述目标数据中包含有注册表信息;
其中,在所述WMI组件将所述目标数据传输给所述应用程序之后,所述方法还包括:
所述应用程序按照预设的数据格式,对所述目标数据中的注册表信息进行解析,以得到目标字符串;
所述应用程序输出所述目标字符串。
一种数据查询装置,应用于配置有Linux操作系统的电子设备中,所述电子设备的Linux操作系统中配置有Wine,所述Wine使得所述Linux操作系统上能够运行基于Windows操作系统构建的应用程序,所述装置包括:
请求接收单元,用于接收所述应用程序传输的数据查询请求;
对象创建单元,用于根据所述数据查询请求,创建WMI服务对象;
其中,所述WMI服务对象用于:
确定所述数据查询请求的查询类型;
在所述数据查询请求属于本地查询类型的情况下,在所述电子设备上获得目标数据;
在所述数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据;
数据传输单元,用于将所述WMI服务对象获得到的目标数据传输给所述应用程序。
一种电子设备,所述电子设备配置有Linux操作系统,所述电子设备的Linux操作系统中配置有Wine,所述Wine使得所述Linux操作系统上能够运行基于Windows操作系统构建的应用程序,所述Wine包括:
WMI组件,用于接收所述应用程序传输的数据查询请求;根据所述数据查询请求,创建WMI服务对象;所述WMI服务对象用于:确定所述数据查询请求的查询类型;在所述数据查询请求属于本地查询类型的情况下,在所述电子设备上获得目标数据;在所述数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据;将所述WMI服务对象获得到的目标数据传输给所述应用程序。
从上述技术方案可以看出,本申请公开的一种数据查询方法及电子设备中,通过电子设备中Linux操作系统所配置的Wine内的WMI组件,在接收到应用程序传输的数据查询请求之后,根据数据查询请求,创建WMI服务对象,进而通过WMI服务对象确定数据查询请求的查询类型,由此在数据查询请求属于本地查询类型的情况下,在电子设备上获得目标数据,而在数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据,再由WMI组件将WMI服务对象获得到的目标数据传输给应用程序。可见,本申请中通过Wine中的WMI组件创建WMI服务对象进行查询类型的判断,进而实现本地设备上的数据查询或远程设备上的数据查询,由此为应用程序提供所需要的数据。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一提供的一种数据查询方法的流程图;
图2为本申请实施例中实现本地或远程查询的示例图;
图3及图4分别为本申请实施例一提供的一种数据查询方法的另一流程图;
图5为本申请实施例二提供的一种数据查询装置的结构示意图;
图6为本申请实施例三提供的一种电子设备的系统架构图;
图7为本申请适用于本地计算机上实现本地查询或远程查询的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1所示,为本申请实施例一提供的一种数据查询方法的实现流程图,该方法可以应用于配置有Linux操作系统的电子设备中,如计算机或服务器等。电子设备的Linux操作系统中配置有Wine,Wine能够使得Linux操作系统上能够运行基于Windows操作系统构建的应用程序。本实施例中的技术方案主要用于实现Wine中应用程序的数据查询需求。
具体的,本实施例中的方法可以包含如下步骤:
步骤101:Wine中的WMI组件接收应用程序传输的数据查询请求。
例如,以电子设备为计算机为例,计算机上安装有Linux操作系统,为了运行基于Windows操作系统开发的应用程序A,用户在Linux操作系统中配置Wine,进而在Wine中配置应用程序A,用户启动应用程序A,在需要查询某项数据如操作系统相关的系统硬件和软件配置时,在应用程序A上进行操作,以使得应用程序生成数据查询请求,该数据查询请求由应用程序A传输给Wine中的WMI组件。
步骤102:WMI组件根据数据查询请求,创建WMI服务对象,以通过WMI服务对象获得数据查询请求对应的目标数据。
具体的,WMI服务对象可以通过调用相应的函数实现数据查询,以得到数据查询请求对应的目标数据。
例如,本实施例中对Wine中的wbem_services_ExecQuery等函数进行改进,使得WMI服务对象可以调用wbem_services_ExecQuery等函数实现数据查询,以得到目标数据。
具体的,WMI服务对象在获得所述数据查询请求对应的目标数据时,可以通过如下方式实现:
步骤201:WMI服务对象确定数据查询请求的查询类型,在数据查询请求属于本地查询类型的情况下,执行步骤202,在数据查询请求属于远程查询类型的情况下,执行步骤203。
其中,本地查询类型是指数据查询请求所需要的数据在电子设备,远程查询类型是指数据查询请求所需要的数据在远程设备上,远程设备与电子设备不是同一设备。
在一种情况下,远程设备上配置有Linux操作系统,且远程设备的Linux操作系统中配置有Wine,以使得远程设备的Linux操作系统上能够运行基于Windows操作系统构建的应用程序。
在另一种情况下,远程设备上配置有Windows操作系统。相应的,远程设备上配置有WMI提供程序,即远程设备上配置的应用程序。
例如,如图2中所示,以电子设备为本地的计算机为例,本地的计算机上安装有Linux操作系统,在Linux操作系统中配置Wine,在Wine中配置有基于Windows操作系统的应用程序A。用户启动应用程序A,在需要查询某项数据如操作系统相关的系统硬件和软件配置时,在应用程序A上进行操作,以使得应用程序生成数据查询请求。该数据查询请求由应用程序A传输给Wine中的WMI组件,WMI组件创建WMI服务对象,WMI服务对象确定数据查询请求是针对本地计算机的查询请求还是针对远程计算机的查询请求。
步骤202:WMI服务对象在电子设备上获得目标数据。
其中,WMI服务对象可以在电子设备上执行查询操作,以得到目标数据。
步骤203:WMI服务对象在远程设备上获得目标数据。
其中,WMI服务对象可以通过被改进的exec_query_data等函数在远程设备上实现数据查询,以得到目标数据。
由此,本实施例中WMI服务对象通过查询类型的判断,以不同的方式实现本地或远程的数据查询,以得到目标数据。
进一步的,本实施例中还可以将目标数据保存到内存中。
步骤103:WMI组件将目标数据传输给应用程序。
其中,应用程序在接收到目标数据之后,可以将目标数据进行输出。
从上述技术方案可以看出,本申请实施例一的一种数据查询方法中,通过电子设备中Linux操作系统所配置的Wine内的WMI组件,在接收到应用程序传输的数据查询请求之后,根据数据查询请求,创建WMI服务对象,进而通过WMI服务对象确定数据查询请求的查询类型,由此在数据查询请求属于本地查询类型的情况下,在电子设备上获得目标数据,而在数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据,再由WMI组件将WMI服务对象获得到的目标数据传输给应用程序。可见,本申请中通过Wine中的WMI组件创建WMI服务对象进行查询类型的判断,进而实现本地设备上的数据查询或远程设备上的数据查询,由此为应用程序提供所需要的数据。
在一种实现方式中,目标数据中可以包含有注册表信息,如系统硬件和软件配置的注册表信息,此时,注册表信息为二进制格式或其他特定的文本格式,这种格式对于用户来说是不可读的。因此,本实施例中应用程序在接收到目标数据之后,可以先按照预设的数据格式,对目标数据中的注册表信息进行解析,进而得到目标字符串。这些目标字符串为特定的数据格式,对于用户来说是可读的,此时,应用程序可以输出目标字符串,以提供给用户阅读。
例如,本实施例中,对于查询到的目标数据中的注册表信息,包含创建、枚举、获取注册表键值等方法,可以通过定义结构体和变量来封装注册表操作相关的函数,从而实现WMI组件的读取注册表的方法。如表1所示,为注册表项字段和相应方法的说明字段。
表1 注册表项字段
注册表项字段 方法说明字段
reg_create_key 方法可用于创建新的注册表键
reg_enum_key 方法可用于枚举指定注册表键下的所有子键
reg_enum_values 方法可用于枚举指定注册表键下的所有键值
reg_get_stringvalue 方法可用于获取指定注册表键下的字符串值
reg_get_dwordvalue 方法可用于获取指定注册表键下的DWORD值
这些方法可以有效解析目标数据,例如,从文本文件的目标数据中读取数据,清理文字数据或对字符串进行操作,进而得到可读的目标字符串。
在一种实现方式中,在WMI组件根据数据查询请求,创建WMI服务对象之前,本实施例中的方法还可以包含如下步骤,如图3中所示:
步骤104:WMI组件解析数据查询请求,以得到数据查询请求中的查询信息。
其中,查询信息至少包括查询语句和至少一项信息项,信息项用于指示所需要的数据,且,在数据查询请求属于远程查询类型的情况下,查询信息中还包含连接信息。
例如,在数据查询请求中解析出命名空间和WQL(WMI Query Language)的查询语句,命名空间中有多项名称即信息项,分别表示所需要的数据。而连接信息中可以包含有远程设备的连接地址如IP(Internet Protocol)地址、用户名和密码等信息。
步骤105:WMI组件将查询信息保存在预设的链表中。
具体的,本实施例中可以预先创建有链表,该链表用于保存属于远程查询类型的数据查询请求中解析到的连接信息。
例如,WMI组件可以通过调用被改进的wbem_locator_ConnectServer函数对数据查询请求进行解析,进而将解析出来的查询信息保存到链表中。
基于以上方案,步骤201中WMI服务对象可以在链表中查询是否存在连接信息来确定数据查询请求的查询类型。如果链表中不存在连接信息,确定数据查询请求属于本地查询类型;如果链表中存在连接信息,确定数据查询请求属于远程查询类型。
例如,WMI服务对象可以调用被改进的wbem_services_ExecQuery函数在链表中查询是否有连接信息,如果有,那么WMI服务对象在远程设备上获得目标数据,否则,WMI服务对象在电子设备上获得目标数据。
为了实现远程查询,基于以上方案,在WMI组件解析数据查询请求,以得到数据查询请求中的查询信息之后,即在步骤105将查询信息保存在预设的链表中之后,还可以有如下处理,如图4中所示:
步骤106:判断查询信息中是否还包含有连接信息,在查询信息中还包含有连接信息的情况下,执行步骤107,如果查询信息中不包含连接信息,执行步骤102。
步骤107:WMI组件可以将数据查询请求发送给WMIC进程,以使得WMIC进程解析数据查询请求并根据数据查询请求中的连接信息建立与远程设备之间的数据连接,数据连接用于在电子设备与远程设备之间传输数据,再执行步骤102。
例如,WMI组件在通过调用wbem_locator_ConnectServer函数对数据查询请求解析出来的查询信息中有链接信息的情况下,将数据查询请求发送给WMIC进程;WMIC进程对数据查询请求进行解析,以得到数据查询请求中的连接信息,当然也得到命名空间和WQL的查询语句等查询信息。由此,WMIC进程根据连接信息中的IP地址、用户名和密码等信息建立本地计算机与远程计算机之间的数据连接。
在一种实现方式中,WMI组件在根据数据查询请求,创建WMI服务对象时,具体可以根据数据查询请求中的查询语句和至少一个信息项,创建WMI服务对象。由此,在WMI服务对象中包含有查询语句和信息项。
具体的,WMI组件使用从数据查询请求中解析出来的查询信息创建WMI服务对象。如果是本地COM调用即查询类型为本地查询类型,那么WMI组件根据信息项中的命名空间、WQL查询语句等信息创建本地的WMI服务对象,由本地的WMI服务对象在电子设备上获得目标数据;如果是远程COM调用即查询类型为远程查询类型,WMI组件使用从数据查询请求中解析出来的查询信息(包括远程计算机的IP地址、命名空间、用户名和密码等信息)创建远程的WMI服务对象,由远程的WMI服务对象在远程设备上获得目标数据。
例如,WMI组件通过调用wbem_locator_ConnectServer函数解析到查询语句和信息项之后,通过wbem_locator_ConnectServer函数根据这些查询语句和信息项创建WMI服务对象。
在一种实现方式中,WMI服务对象在电子设备上获得目标数据时,可以通过如下方式实现:WMI服务对象在电子设备上的WMI提供程序上按照信息项执行查询语句,以得到目标数据。
具体的,WMI服务对象可以在电子设备上的WMI提供程序上通过执行ExecQuery查询操作来得到目标数据。
例如,WMI服务对象在调用wbem_services_ExecQuery函数在链表中没有查询到连接信息的情况下,可以通过exec_query函数根据查询语句在电子设备的WMI提供程序上按照信息项执行相应的查询操作,进而得到目标数据,即查询结果,实现本地数据查询。
在一种实现方式中,WMI服务对象在远程设备上获得目标数据时,可以通过如下方式实现:
首先,WMI服务对象把查询语句和信息项发送给WMIC进程,以使得WMIC进程将查询语句和信息项发送给远程设备的WMI提供程序,在远程设备的WMI提供程序上按照信息项执行查询语句,以得到目标数据;然后,WMI服务对象获得WMIC进程返回的目标数据。
例如,WMI服务对象在调用wbem_services_ExecQuery函数在链表中查询到连接信息的情况下,可以将查询语句和信息项发送给exec_query_data函数,以使得exec_query_data函数将查询语句和信息项发送给wmic进程;wmic进程将查询语句和信息项通过本地计算机与远程计算机之间的数据连接发送给远程计算机的WMI提供程序。由此,在远程计算机的WMI提供程序上按照信息项执行查询语句,进而得到目标数据,即查询结果。之后,这些目标数据由远程计算机返回给本地计算机的WMIC进程,WMIC进程将目标数据返回给exec_query_data函数并保存到内存中,再由exec_query_data函数将目标数据返回给WMI服务对象,实现远程数据查询。
参考图5,为本申请实施例二提供的一种数据查询装置的结构示意图,该装置可以为配置有Linux操作系统的电子设备中的组件,其中,电子设备的Linux操作系统中配置有Wine,Wine使得Linux操作系统上能够运行基于Windows操作系统构建的应用程序,本实施例中的装置为Wine中的WMI组件,具体的,WMI组件中可以包含如下单元:
请求接收单元501,用于接收应用程序传输的数据查询请求;
对象创建单元502,用于根据数据查询请求,创建WMI服务对象;
其中,WMI服务对象用于:
确定数据查询请求的查询类型;
在数据查询请求属于本地查询类型的情况下,在电子设备上获得目标数据;
在数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据;
数据传输单元503,用于将WMI服务对象获得到的目标数据传输给应用程序。
从上述技术方案可以看出,本申请实施例二提供的一种数据查询装置中,通过电子设备中Linux操作系统所配置的Wine内的WMI组件,在接收到应用程序传输的数据查询请求之后,根据数据查询请求,创建WMI服务对象,进而通过WMI服务对象确定数据查询请求的查询类型,由此在数据查询请求属于本地查询类型的情况下,在电子设备上获得目标数据,而在数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据,再由WMI组件将WMI服务对象获得到的目标数据传输给应用程序。可见,本申请中通过Wine中的WMI组件创建WMI服务对象进行查询类型的判断,进而实现本地设备上的数据查询或远程设备上的数据查询,由此为应用程序提供所需要的数据。
其中,对象创建单元502在根据所述数据查询请求,创建WMI服务对象之前,还用于:解析所述数据查询请求,以得到所述数据查询请求中的查询信息;所述查询信息至少包括查询语句和至少一项信息项;所述信息项用于指示所需要的数据;所述查询语句为基于WQL的执行语句,且,在所述数据查询请求属于远程查询类型的情况下,所述查询信息中还包含连接信息;将所述查询信息保存在预设的链表中。
具体的,所述WMI服务对象在确定所述数据查询请求的查询类型时,具体用于:所述WMI服务对象在链表中查询是否存在连接信息;如果所述链表中不存在连接信息,确定所述数据查询请求属于本地查询类型;如果所述链表中存在连接信息,确定所述数据查询请求属于远程查询类型。
基于以上方案,在对象创建单元502解析所述数据查询请求,以得到所述数据查询请求中的查询信息之后,还用于:在所述查询信息中还包含连接信息的情况下,将所述数据查询请求发送给WMIC进程,以使得WMIC进程解析所述数据查询请求并根据所述数据查询请求中的连接信息建立与所述远程设备之间的数据连接,所述数据连接用于在所述电子设备与所述远程设备之间传输数据。
在一种实现方式中,对象创建单元502在根据所述数据查询请求,创建WMI服务对象时,具体用于:根据所述数据查询请求中的查询语句和至少一个信息项,创建WMI服务对象。
在一种实现方式中,所述WMI服务对象在所述电子设备上获得目标数据时,具体用于:在所述电子设备上的WMI提供程序上按照所述信息项执行所述查询语句,以得到目标数据。
在一种实现方式中,所述WMI服务对象在远程设备上获得目标数据时,具体用于:把所述查询语句和所述信息项发送给WMIC进程,以使得所述WMIC进程将所述查询语句和所述信息项发送给远程设备的WMI提供程序,在所述远程设备的WMI提供程序上按照所述信息项执行所述查询语句,以得到目标数据;获得所述WMIC进程返回的所述目标数据。
在一种实现方式中,所述目标数据中包含有注册表信息;其中,在数据传输单元503将所述目标数据传输给所述应用程序之后,应用程序按照预设的数据格式,对所述目标数据中的注册表信息进行解析,以得到目标字符串;输出所述目标字符串。
需要说明的是,本实施例中各单元的具体实现可以参考前文中的相应内容,此处不再详述。
另外,本申请实施例三还提供了一种电子设备,电子设备配置有Linux操作系统,电子设备的Linux操作系统中配置有Wine,Wine使得Linux操作系统上能够运行基于Windows操作系统构建的应用程序,如图6中的架构图所示,Wine包括:
WMI组件,用于接收应用程序传输的数据查询请求;根据数据查询请求,创建WMI服务对象;所述WMI服务对象用于:确定所述数据查询请求的查询类型;在所述数据查询请求属于本地查询类型的情况下,在所述电子设备上获得目标数据;在所述数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据;将所述WMI服务对象获得到的目标数据传输给所述应用程序。
从上述技术方案可以看出,本申请实施例三的一种电子设备中,通过电子设备中Linux操作系统所配置的Wine内的WMI组件,在接收到应用程序传输的数据查询请求之后,根据数据查询请求,创建WMI服务对象,进而通过WMI服务对象确定数据查询请求的查询类型,由此在数据查询请求属于本地查询类型的情况下,在电子设备上获得目标数据,而在数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据,再由WMI组件将WMI服务对象获得到的目标数据传输给应用程序。可见,本申请中通过Wine中的WMI组件创建WMI服务对象进行查询类型的判断,进而实现本地设备上的数据查询或远程设备上的数据查询,由此为应用程序提供所需要的数据。
具体,本实施例中通过对WMI组件中核心模块如wbemprox模块的相应函数的改进,使得WMI组件能够实现本地查询或远程查询。
以电子设备为图2中的本地计算机为例,以下对本申请的技术方案进行详细说明:
首先,本申请提供了一种实现了Wine中远程和本地WQL连接的方法,以使用户能够连接到本地计算机或者远程计算机上的WMI提供程序,通过实现调用WMIC的方式来处理WQL查询语句并解析结果,最终实现对本地或者远程连接访问的一种机制。
具体的,如图7中所示,实现Wine中远程和本地WQL连接以及查询的流程如下:
开始:用户运行Wine中的应用程序,应用程序发出数据查询请求给WMI组件,数据查询请求中包括命名空间、WQL查询语句等信息。也就是说,Wine应用程序作为一个中间层,调用WMI组件提供的接口和功能来处理用户的数据查询请求。用户通过Wine应用程序与WMI组件进行交互,通过发送数据传输请求向WMI组件提供查询所需的信息。
组件初始化:Wine应用程序通过数据查询请求触发WMI组件初始化并开始准备建立连接、初始化必要的数据结构等。然后,Wine应用程序会准备建立与远程计算机的连接,这涉及到指定远程计算机的IP地址、用户名、密码等连接信息。这些连接信息通常是由用户在发起查询请求时提供的。
保存数据以及组件连接:首先,WMI组件解析数据查询请求,将解析出的查询信息进行保存,并判断查询信息中是否有连接信息来判断是否远程COM调用即远程查询类型;如果是远程COM调用,WMI组件将连接信息保存到链表中并将数据查询请求发送到WMIC进程,WMIC进程解析查询请求中的远程计算机IP地址、命名空间、WQL查询语句等信息并根据这些信息建立与远程计算机之间的数据连接。
例如,本实施例中修改wbem_locator_ConnectServer函数,由WMI组件调用该函数对数据查询请求进行解析并将解析出的远程连接IP地址等连接信息保存到链表中。
另外,当需要进行远程查询时,Wine应用程序可以将用户输入的连接信息,包括IP地址、用户名和密码等,保存在一个连接列表或数据结构中。连接列表或数据结构的目的是用于连接管理,以便用户可以轻松地连接到和断开与远程计算机的连接,并且可以管理多个远程计算机上的WMI提供程序,也可以方便用户管理多个远程连接,避免后续重复输入连接信息。
创建WMI服务对象:WMI组件使用从数据查询请求中解析出来的查询信息创建WMI服务对象。如果是本地COM调用,那么根据提供的命名空间、WQL查询语句等信息创建本地的WMI服务对象;如果是远程COM调用,WMI组件使用从数据查询请求中解析出来的查询信息(包括远程计算机的IP地址、命名空间、用户名和密码等信息)创建远程的WMI服务对象。
例如,WMI组件可以通过调用wbem_locator_ConnectServer函数来创建本地WMI服务对象或远程WMI服务对象,该函数将返回一个IWbemServices接口指针,该指针用于后续的操作。
ExecQuery查询数据:被创建的WMI服务对象开始运行,即执行查询方法实现查询操作。例如,WMI服务对象可以使用wbem_services_ExecQuery函数在WMI提供程序上执行WQL查询。具体的,此函数的功能是:首先在链表中搜索远程的连接信息,以确定查询是远程COM调用还是本地COM调用。如果找到远程的连接信息,则该函数调用exec_query_data函数对远程计算机的WMI提供程序执行查询。如果没有找到远程的连接信息,则该函数调用exec_query函数对本地计算机的WMI提供程序执行查询。
其中,如果是远程COM调用,创建的WMI服务对象通过WMIC进程作为中间件执行查询方法实现查询操作,并将查询结果保存在内存中。最后,WMIC进程将查询结果传输回Wine应用程序。对于远程的查询结果,Wine应用程序可以使用字符串解析功能进行解释,以便使用户能够轻松理解和使用WMI提供程序返回的查询结果。
在整个流程中,如果出现任何错误,Wine应用程序将捕获并处理它们。如果查询失败,Wine应用程序将向用户提供相关错误信息。同时,当远程连接建立时,IP地址、命名空间、用户名和密码也已经被保存到连接列表或数据结构中,使得用户可以轻松地再次连接到同一远程WMI提供程序,而无需重新输入这些信息。
如果是本地COM调用,WMI组件将使用创建的WMI服务对象执行ExecQuery查询操作,并将结果保存在内存中。例如,WMI服务对象可以通过调用exec_query函数实现此操作。该函数将根据提供的查询语句在本地WMI提供程序上执行查询,并将结果保存在内存中。执行查询后,查询结果以字符串的形式返回给调用者。用户可以解析该字符串以获取所需的信息。这样,查询结果就可以进行进一步处理或展示给用户。
可见,本申请可以支持在Wine环境中实现对本地和远程的WMI提供程序的WQL查询,实现了Wine中未实现的功能,使得Wine可以更好地支持Windows应用程序和管理工具的运行和管理。实现了连接管理功能,使得用户可以轻松地连接到和断开与远程计算机的连接,提高了用户的使用体验和效率。支持本地WQL连接的查询,相对于远程连接更加简单,可以满足用户的多种查询需求。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种数据查询方法,其特征在于,应用于配置有Linux操作系统的电子设备中,所述电子设备的Linux操作系统中配置有Wine,所述Wine使得所述Linux操作系统上能够运行基于Windows操作系统构建的应用程序,所述方法包括:
所述Wine中的WMI组件接收所述应用程序传输的数据查询请求;
WMI组件根据所述数据查询请求,创建WMI服务对象;
其中,所述WMI服务对象用于:
确定所述数据查询请求的查询类型;
在所述数据查询请求属于本地查询类型的情况下,在所述电子设备上获得目标数据;
在所述数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据;
所述WMI组件将所述WMI服务对象获得到的目标数据传输给所述应用程序;
其中,在所述WMI组件根据所述数据查询请求,创建WMI服务对象之前,所述方法还包括:
所述WMI组件解析所述数据查询请求,以得到所述数据查询请求中的查询信息;所述查询信息至少包括查询语句和至少一项信息项;所述信息项用于指示所需要的数据;所述查询语句为基于WQL的执行语句,且,在所述数据查询请求属于远程查询类型的情况下,所述查询信息中还包含连接信息;
所述WMI组件将所述查询信息保存在预设的链表中;
其中,所述WMI服务对象确定所述数据查询请求的查询类型,包括:
所述WMI服务对象在链表中查询是否存在连接信息;
如果所述链表中不存在连接信息,确定所述数据查询请求属于本地查询类型;
如果所述链表中存在连接信息,确定所述数据查询请求属于远程查询类型。
2.根据权利要求1所述的方法,其特征在于,在所述WMI组件解析所述数据查询请求,以得到所述数据查询请求中的查询信息之后,所述方法还包括:
在所述查询信息中还包含连接信息的情况下,所述WMI组件将所述数据查询请求发送给WMIC进程,以使得WMIC进程解析所述数据查询请求并根据所述数据查询请求中的连接信息建立与所述远程设备之间的数据连接,所述数据连接用于在所述电子设备与所述远程设备之间传输数据。
3.根据权利要求1所述的方法,其特征在于,所述WMI组件根据所述数据查询请求,创建WMI服务对象,包括:
所述WMI组件根据所述数据查询请求中的查询语句和至少一个信息项,创建WMI服务对象;
其中,在所述数据查询请求属于本地查询类型的情况下,所述WMI组件创建本地的WMI服务对象,所述本地的WMI服务对象在所述电子设备上获得目标数据;
在所述数据查询请求属于远程查询类型的情况下,所述WMI组件创建远程的WMI服务对象,所述远程的WMI服务对象在远程设备上获得目标数据。
4.根据权利要求1所述的方法,其特征在于,所述WMI服务对象在所述电子设备上获得目标数据,包括:
所述WMI服务对象在所述电子设备上的WMI提供程序上按照所述信息项执行所述查询语句,以得到目标数据。
5.根据权利要求1所述的方法,其特征在于,所述WMI服务对象在远程设备上获得目标数据,包括:
所述WMI服务对象把所述查询语句和所述信息项发送给WMIC进程,以使得所述WMIC进程将所述查询语句和所述信息项发送给远程设备的WMI提供程序,在所述远程设备的WMI提供程序上按照所述信息项执行所述查询语句,以得到目标数据;
所述WMI服务对象获得所述WMIC进程返回的所述目标数据。
6.根据权利要求1所述的方法,其特征在于,所述目标数据中包含有注册表信息;
其中,在所述WMI组件将所述目标数据传输给所述应用程序之后,所述方法还包括:
所述应用程序按照预设的数据格式,对所述目标数据中的注册表信息进行解析,以得到目标字符串;
所述应用程序输出所述目标字符串。
7.一种数据查询装置,其特征在于,应用于配置有Linux操作系统的电子设备中,所述电子设备的Linux操作系统中配置有Wine,所述Wine使得所述Linux操作系统上能够运行基于Windows操作系统构建的应用程序,所述装置包括:
请求接收单元,用于接收所述应用程序传输的数据查询请求;
对象创建单元,用于根据所述数据查询请求,创建WMI服务对象;
其中,所述WMI服务对象用于:
确定所述数据查询请求的查询类型;
在所述数据查询请求属于本地查询类型的情况下,在所述电子设备上获得目标数据;
在所述数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据;
数据传输单元,用于将所述WMI服务对象获得到的目标数据传输给所述应用程序;
其中,对象创建单元在根据所述数据查询请求,创建WMI服务对象之前,还用于:
所述WMI组件解析所述数据查询请求,以得到所述数据查询请求中的查询信息;所述查询信息至少包括查询语句和至少一项信息项;所述信息项用于指示所需要的数据;所述查询语句为基于WQL的执行语句,且,在所述数据查询请求属于远程查询类型的情况下,所述查询信息中还包含连接信息;
所述WMI组件将所述查询信息保存在预设的链表中;
其中,所述WMI服务对象确定所述数据查询请求的查询类型,包括:
所述WMI服务对象在链表中查询是否存在连接信息;
如果所述链表中不存在连接信息,确定所述数据查询请求属于本地查询类型;
如果所述链表中存在连接信息,确定所述数据查询请求属于远程查询类型。
8.一种电子设备,其特征在于,所述电子设备配置有Linux操作系统,所述电子设备的Linux操作系统中配置有Wine,所述Wine使得所述Linux操作系统上能够运行基于Windows操作系统构建的应用程序,所述Wine包括:
WMI组件,用于接收所述应用程序传输的数据查询请求;根据所述数据查询请求,创建WMI服务对象;所述WMI服务对象用于:确定所述数据查询请求的查询类型;在所述数据查询请求属于本地查询类型的情况下,在所述电子设备上获得目标数据;在所述数据查询请求属于远程查询类型的情况下,在远程设备上获得目标数据;将所述WMI服务对象获得到的目标数据传输给所述应用程序;
其中,在所述WMI组件根据所述数据查询请求,创建WMI服务对象之前,还解析所述数据查询请求,以得到所述数据查询请求中的查询信息;所述查询信息至少包括查询语句和至少一项信息项;所述信息项用于指示所需要的数据;所述查询语句为基于WQL的执行语句,且,在所述数据查询请求属于远程查询类型的情况下,所述查询信息中还包含连接信息;
所述WMI组件将所述查询信息保存在预设的链表中;
其中,所述WMI服务对象确定所述数据查询请求的查询类型,包括:
所述WMI服务对象在链表中查询是否存在连接信息;
如果所述链表中不存在连接信息,确定所述数据查询请求属于本地查询类型;
如果所述链表中存在连接信息,确定所述数据查询请求属于远程查询类型。
CN202310742437.1A 2023-06-21 2023-06-21 数据查询方法、装置及电子设备 Active CN116483483B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310742437.1A CN116483483B (zh) 2023-06-21 2023-06-21 数据查询方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310742437.1A CN116483483B (zh) 2023-06-21 2023-06-21 数据查询方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN116483483A CN116483483A (zh) 2023-07-25
CN116483483B true CN116483483B (zh) 2023-09-19

Family

ID=87212290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310742437.1A Active CN116483483B (zh) 2023-06-21 2023-06-21 数据查询方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN116483483B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101877002A (zh) * 2009-11-30 2010-11-03 许继集团有限公司 基于统一接口的内存数据库分布式访问方法及系统
CN110502532A (zh) * 2019-08-26 2019-11-26 上海达梦数据库有限公司 远程数据库对象的优化方法、装置、设备和存储介质
CN111191224A (zh) * 2019-07-08 2020-05-22 腾讯科技(深圳)有限公司 虚拟机检测的对抗方法、装置及计算机可读存储介质
CN111753223A (zh) * 2020-06-09 2020-10-09 北京天空卫士网络安全技术有限公司 一种访问控制的方法和装置
CN111858661A (zh) * 2019-04-30 2020-10-30 广州汽车集团股份有限公司 一种查询车况的方法及其系统、存储介质
CN112035542A (zh) * 2020-08-28 2020-12-04 成都质数斯达克科技有限公司 信息查询方法、装置、电子设备及可读存储介质
CN115454670A (zh) * 2022-09-02 2022-12-09 珠海豹趣科技有限公司 一种计算机进程信息枚举方法、装置和电子设备
WO2023029752A1 (zh) * 2021-08-31 2023-03-09 深圳市兆珑科技有限公司 数据查询方法、装置、服务器及计算机可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7278143B2 (en) * 2001-06-28 2007-10-02 Microsoft Corporation System and related methods for accessing management functionality through a command line utility
US20060200548A1 (en) * 2005-03-02 2006-09-07 N-Able Technologies International, Inc. Automation engine and method for providing an abstraction layer

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101877002A (zh) * 2009-11-30 2010-11-03 许继集团有限公司 基于统一接口的内存数据库分布式访问方法及系统
CN111858661A (zh) * 2019-04-30 2020-10-30 广州汽车集团股份有限公司 一种查询车况的方法及其系统、存储介质
CN111191224A (zh) * 2019-07-08 2020-05-22 腾讯科技(深圳)有限公司 虚拟机检测的对抗方法、装置及计算机可读存储介质
CN110502532A (zh) * 2019-08-26 2019-11-26 上海达梦数据库有限公司 远程数据库对象的优化方法、装置、设备和存储介质
CN111753223A (zh) * 2020-06-09 2020-10-09 北京天空卫士网络安全技术有限公司 一种访问控制的方法和装置
CN112035542A (zh) * 2020-08-28 2020-12-04 成都质数斯达克科技有限公司 信息查询方法、装置、电子设备及可读存储介质
WO2023029752A1 (zh) * 2021-08-31 2023-03-09 深圳市兆珑科技有限公司 数据查询方法、装置、服务器及计算机可读存储介质
CN115454670A (zh) * 2022-09-02 2022-12-09 珠海豹趣科技有限公司 一种计算机进程信息枚举方法、装置和电子设备

Also Published As

Publication number Publication date
CN116483483A (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
KR101365812B1 (ko) 통신을 개시하는 방법, 하나 이상의 프로세서 판독가능 저장 장치 및 컴퓨팅 장치
CN110198247B (zh) 接口测试方法及系统
CN110324169B (zh) 一种接口管理的方法和装置
US9444899B2 (en) Use of internet information services logging to collect user information in an asynchronous manner
CN110457143B (zh) 微服务的调用方法及装置
US7920852B2 (en) Compression of data transmitted between server and mobile device
CN109274773B (zh) 一种实现远程服务调用方法、装置和系统
CN112154420B (zh) 自动智能云服务测试工具
WO2009018234A2 (en) Framework to integrate web services with on-premise software
CN113806104A (zh) 接口访问请求处理方法、api网关、服务器及系统
CN111338717B (zh) 接口调用方法、应用程序升级方法及服务器和客户端
CN116483483B (zh) 数据查询方法、装置及电子设备
CN112883088B (zh) 一种数据处理方法、装置、设备及存储介质
CN111680288A (zh) 容器的命令执行方法、装置、设备及存储介质
CN111414154A (zh) 前端开发的方法、装置、电子设备和存储介质
CN113708955B (zh) 设备配置方法、装置及系统
US20110093525A1 (en) System and method for profiling remote user interface
CN115269228A (zh) 一种数据适配传输方法、装置、设备和介质
CN109672732A (zh) 一种接口适配方法、装置及系统
CN113448751A (zh) 基于dsl的接口响应方法、装置、设备及介质
CN113779018A (zh) 一种数据处理方法和装置
JP2002132810A (ja) Url機能の拡張方法、及び拡張されたurl機能を用いたネットワーク内のリソースへのアクセス方法
CN112650601B (zh) 跨宿主打开小程序的方法、装置、设备、存储介质和程序
CN112925998A (zh) 界面数据处理方法、装置、系统、电子设备及存储介质
CN114143187A (zh) 智能平台接口网络地址管理方法、系统、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant