一种获取操作系统版本信息的方法、装置及电子设备与流程

文档序号:11864405阅读:331来源:国知局
一种获取操作系统版本信息的方法、装置及电子设备与流程
本发明涉及计算机信息技术,尤其涉及一种获取操作系统版本信息的方法、装置及电子设备。
背景技术
:随着计算机通信以及互联网技术的不断发展,电子设备,例如,智能移动电话、个人数字助理、掌上电脑、笔记本电脑等应用越来越广泛,由于不同用户的个性化需求,安装在电子设备中的操作系统千差万别,同一操作系统的版本也各不相同,例如,随着微软视窗(Windows)操作系统版本的不断升级,现存多个版本的视窗操作系统,包括但不限于:WindowsXP、WindowsVista、Windows7、Windows8、Windows10等主流视窗操作系统。同时,电子设备中需要安装的应用程序(APP,Application)也越来越多,例如,通讯类应用程序、游戏类应用程序、娱乐类应用程序、社交类应用程序、实用生活类应用程序等,因而,各类应用程序在安装时,需要获取操作系统版本信息,从而可以基于当前操作系统版本信息下载对应的应用程序安装包进行安装,使之可以正常运行在当前操作系统中,例如,对于毒霸安全应用程序中的一应用功能(例如,推荐应用功能、防御系统应用功能等),在不同版本的操作系统下,可能有不同的实现手段或展现方式,因而,需要在对应版本的操作系统下安装才能正常运行和使用。目前,获取操作系统版本信息是通过调用版本信息获取函数(GetVersionEx函数)来实现的,该版本信息获取函数用于获取当前操作系统版本信息,返回值为一版本结构信息(OSVERSIONINFO),该OSVERSIONINFO信息中包含有主版本号和次版本号,通过查询预先设置的主次版本号与操作系统版本的映射关系集,可以获取操作系统版本信息。但该获取操作系统版本信息的方法,由于该版本信息获取函数在一些操作系统版本之后被相应操作系统开发商废弃,使得该版本信息获取函数不能获取后续新开发的操作系统版本信息。例如,对于Windows8以上的视窗操作系统版本,在调用版本信息获取函数获取版本信息时,在版本信息获取函数返回的版本结构信息中,依据主次版本号均判断该操作系统版本信息为Windows8,并不能识别Windows8以上的操作系统版本,使得获取的操作系统版本信息准确率较低,进而影响依据获取的操作系统版本信息安装的应用程序的可使用性。技术实现要素:有鉴于此,本发明实施例提供一种获取操作系统版本信息的方法、装置及电子设备,能够提升获取的操作系统版本信息的准确性,以解决现有的获取操作系统版本信息的方法中,版本信息获取函数被废弃后,不能准确获取后续新开发的操作系统版本信息的问题。第一方面,本发明实施例提供一种获取操作系统版本信息的方法,包括:调用版本信息获取函数,获取当前操作系统主次版本信息;提取获取的所述当前操作系统主次版本信息中包含的主版本号以及次版本号;如果所述主版本号大于或等于预先设置的主版本号阈值,且所述次版本号大于或等于预先设置的次版本号阈值;调用系统版本号获取函数,再次获取当前操作系统主次版本信息中包含的主版本号和次版本号;查询预先设置的主次版本号与操作系统版本信息的映射关系集,获取再次获取的所述主版本号和所述次版本号映射的操作系统版本信息。结合第一方面,在第一方面的第一种实施方式中,所述方法还包括:如果所述主版本号小于预先设置的主版本号阈值,或,所述主版本号等于预先设置的主版本号阈值,且所述次版本号小于预先设置的次版本号阈值;查询预先设置的主次版本号与操作系统版本信息的映射关系集,获取所述主版本号和所述次版本号映射的操作系统版本信息。结合第一方面,在第一方面的第二种实施方式中,所述调用系统版本号获取函数,再次获取当前操作系统主次版本信息包括:调用模块句柄获取函数,获取所述系统版本号获取函数所属的内核文件动态链接库模块的模块基地址;以所述模块基地址为参数,调用进程地址获取函数,获取所述系统版本号获取函数的函数地址;依据获取的函数地址,调用所述系统版本号获取函数,获取当前操作系统主次版本信息。结合第一方面,在第一方面的第三种实施方式中,所述调用版本信息获取函数,获取当前操作系统主次版本信息包括:从所述调用版本信息获取函数返回的版本结构信息中,获取当前操作系统主次版本信息。结合第一方面、第一方面的第一种至第三种中任一种实施方式,在第一方面的第四种实施方式中,所述主版本号阈值设置为6,次版本号阈值设置为2。第二方面,本发明实施例提供一种获取操作系统版本信息的装置,包括:第一函数调用模块、提取模块、主次版本号处理模块、第二函数调用模块以及版本信息获取模块,其中,第一函数调用模块,用于调用版本信息获取函数,获取当前操作系统主次版本信息;提取模块,用于提取获取的所述当前操作系统主次版本信息中包含的主版本号以及次版本号;主次版本号处理模块,如果所述主版本号大于或等于预先设置的主版本号阈值,且所述次版本号大于或等于预先设置的次版本号阈值;第二函数调用模块,用于调用系统版本号获取函数,再次获取当前操作系统主次版本信息中包含的主版本号和次版本号;版本信息获取模块,用于查询预先设置的主次版本号与操作系统版本信息的映射关系集,获取再次获取的所述主版本号和所述次版本号映射的操作系统版本信息。结合第二方面,在第二方面的第一种实施方式中,所述主次版本号处理模块还用于如果所述主版本号小于预先设置的主版本号阈值,或,所述主版本号等于预先设置的主版本号阈值,且所述次版本号小于预先设置的次版本号阈值;查询预先设置的主次版本号与操作系统版本信息的映射关系集,获取所述主版本号和所述次版本号映射的操作系统版本信息。结合第二方面,在第二方面的第二种实施方式中,所述第二函数调用模块包括:基地址获取单元、函数地址获取单元以及主次版本信息获取单元,其中,基地址获取单元,用于调用模块句柄获取函数,获取所述系统版本号获取函数所属的内核文件动态链接库模块的模块基地址;函数地址获取单元,用于以所述模块基地址为参数,调用进程地址获取函数,获取所述系统版本号获取函数的函数地址;主次版本信息获取单元,用于依据获取的函数地址,调用所述系统版本号获取函数,获取当前操作系统主次版本信息。结合第二方面,在第二方面的第二种实施方式中,所述第一函数调用模块包括:函数调用单元以及主次版本信息解析单元,其中,函数调用单元,用于调用版本信息获取函数;主次版本信息解析单元,用于从所述调用版本信息获取函数返回的版本结构信息中,解析获取当前操作系统主次版本信息。结合第二方面、第二方面的第一种至第三种中任一种实施方式,在第二方面的第四种实施方式中,所述主版本号阈值设置为6,次版本号阈值设置为2。第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的获取操作系统版本信息的方法。本发明实施例提供的一种获取操作系统版本信息的方法、装置及电子设备,通过调用版本信息获取函数,获取当前操作系统主次版本信息;提取获取的所述当前操作系统主次版本信息中包含的主版本号以及次版本号;如果所述主版本号大于或等于预先设置的主版本号阈值,且所述次版本号大于或等于预先设置的次版本号阈值;调用系统版本号获取函数,再次获取当前操作系统主次版本信息中包含的主版本号和次版本号;查询预先设置的主次版本号与操作系统版本信息的映射关系集,获取再次获取的所述主版本号和所述次版本号映射的操作系统版本信息,能够提升获取的操作系统版本信息的准确性,以解决现有的获取操作系统版本信息的方法中,版本信息获取函数被废弃后,不能准确获取后续新开发的操作系统版本信息的问题。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1为本发明的实施例一获取操作系统版本信息的方法流程示意图;图2为本发明的实施例二获取操作系统版本信息的装置结构示意图;图3为本发明电子设备一个实施例的结构示意图。具体实施方式下面结合附图对本发明实施例进行详细描述。应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。图1为本实施例一获取操作系统版本信息的方法流程示意图,如图1所示,本实施例的方法可以包括:步骤101,调用版本信息获取函数,获取当前操作系统主次版本信息;本实施例中,作为一可选实施例,本实施例获取操作系统版本信息的方法应用于微软视窗操作系统。本实施例中,作为一可选实施例,版本信息获取函数包括GetVersionEx函数。其中,GetVersionEx函数包括:GetVersionExW函数以及GetVersionExA函数。本实施例中,调用版本信息获取函数获取当前操作系统主次版本信息包括:从所述调用版本信息获取函数返回的版本结构信息中,获取当前操作系统主次版本信息。步骤102,提取获取的所述当前操作系统主次版本信息中包含的主版本号以及次版本号;本实施例中,作为一可选实施例,调用版本信息获取函数(GetVersionEx函数),从返回的版本结构信息(OSVERSIONINFO信息)中获取主版本号和次版本号,例如,当前操作系统主次版本信息中包含的主版本号以及次版本号可以如下:主版本号5、次版本号2;或主版本号6、次版本号0;或主版本号6、次版本号1;或主版本号6、次版本号2。步骤103,如果所述主版本号大于或等于预先设置的主版本号阈值,且所述次版本号大于或等于预先设置的次版本号阈值;本实施例中,对于每一操作系统,一主版本号和一次版本号可以唯一确定一操作系统版本信息,通过查询预先设置的主次版本号与操作系统版本信息的映射关系集,可以获取操作系统主次版本信息中包含的主版本号以及次版本号映射的操作系统版本信息。例如,基于微软的视窗操作系统,主次版本号与操作系统版本信息的映射关系集可以如下表1所示。表1主版本号次版本号视窗操作系统版本信息52WindowsXP60WindowsVista61Windows762Windows8………本实施例中,对于Windows8以上的视窗操作系统版本(信息),调用版本信息获取函数获取的当前操作系统主次版本信息中包含的主版本号均为6,次版本号均为2,使得得到的视窗操作系统版本不是当前操作系统的真实版本,降低了获取的操作系统版本信息的准确率,进而影响依据获取的操作系统版本信息安装的应用程序的可使用性,例如,可能导致安装的应用程序无法运行。本实施例中,作为一可选实施例,主版本号阈值设置为6,次版本号阈值设置为2。即如果主版本号大于或等于6,且所述次版本号大于或等于2,需要执行本实施例方法的进一步处理。本实施例中,作为一可选实施例,该方法还包括:如果所述主版本号小于预先设置的主版本号阈值,或,所述主版本号等于预先设置的主版本号阈值,且所述次版本号小于预先设置的次版本号阈值;查询预先设置的主次版本号与操作系统版本信息的映射关系集,获取所述主版本号和所述次版本号映射的操作系统版本信息。步骤104,调用系统版本号获取函数,再次获取当前操作系统主次版本信息中包含的主版本号和次版本号;本实施例中,作为一可选实施例,系统版本号获取函数为RtlGetNtVersionNumbers函数,该RtlGetNtVersionNumbers函数为微软一未公开的未文档化的函数,在动态链接库模块(ntdll.dll)中定义和保存,用于获取操作系统版本号,可用于操作系统主次版本信息获取。本实施例中,在视窗操作系统版本为Windows8或Windows8以上时,通过调用版本信息获取函数,获取的当前操作系统主次版本信息存在准确率较低的技术问题,因而,通过再次调用RtlGetNtVersionNumbers函数,可以获取当前操作系统精确的主次版本信息,返回的参数包括主版本号以及次版本号。本实施例中,作为一可选实施例,调用系统版本号获取函数,再次获取当前操作系统主次版本信息包括:A11,调用模块句柄获取函数,获取所述系统版本号获取函数所属的内核文件动态链接库模块的模块基地址;本实施例中,作为一可选实施例,模块句柄获取函数为::GetModuleHandle(T(″ntdll.dll″))函数,内核文件动态链接库模块为ntdll.dll模块。A12,以所述模块基地址为参数,调用进程地址获取函数,获取所述系统版本号获取函数的函数地址;本实施例中,作为一可选实施例,进程地址获取函数为::GetProcAddress函数。A13,依据获取的函数地址,调用所述系统版本号获取函数,获取当前操作系统主次版本信息。本实施例中,调用::GetModuleHandle(_T(″ntdll.dll″))函数获取ntdll.dll模块的模块基地址,由获取的模块基地址为参数,调用::GetProcAddress函数,获取RtlGetNtVersionNumbers函数的函数地址,然后,调用该函数地址对应的RtlGetNtVersionNumbers函数,这样,在调用RtlGetNtVersionNumbers函数的返回值列表中,包括当前操作系统主次版本信息,例如,主版本号值以及次版本号值。本实施例中,例如,针对前述主版本号为6,次版本号为2的操作系统主次版本信息映射的操作系统版本,调用系统版本号获取函数,再次获取的当前操作系统主次版本信息可以如下:主版本号6、次版本号2;或主版本号6、次版本号4;或主版本号10、次版本号0。步骤105,查询预先设置的主次版本号与操作系统版本信息的映射关系集,获取再次获取的所述主版本号和所述次版本号映射的操作系统版本信息。本实施例中,作为一可选实施例,查询主次版本号与操作系统版本信息的映射关系集,可以得到再次获取的主版本号和次版本号映射的当前操作系统版本信息如下:主版本号6、次版本号2,映射Windows8;主版本号6、次版本号4,映射旧版本Windows10;主版本号10、次版本号0,映射新版本Windows10等。本实施例获取操作系统版本信息的方法,通过调用版本信息获取函数,获取当前操作系统主次版本信息;提取获取的所述当前操作系统主次版本信息中包含的主版本号以及次版本号;如果所述主版本号大于或等于预先设置的主版本号阈值,且所述次版本号大于或等于预先设置的次版本号阈值;调用系统版本号获取函数,再次获取当前操作系统主次版本信息中包含的主版本号和次版本号;查询预先设置的主次版本号与操作系统版本信息的映射关系集,获取再次获取的所述主版本号和所述次版本号映射的操作系统版本信息。这样,对现有获取操作系统版本信息的方法进行扩展,可以利用版本信息获取函数获取预先设置的操作系统版本阈值以下的操作系统版本,再利用系统版本号获取函数,例如,利用微软未公开的版本号获取函数RtlGetNtVersionNumbers函数获取操作系统版本阈值以上的操作系统版本,能够实现获取操作系统版本信息的兼容性,同时,解决了版本信息获取函数被相应操作系统开发商废弃后,不能准确获取后续新开发的操作系统版本信息的技术问题,可以有效提升获取的操作系统版本信息的准确率,增强依据获取的操作系统版本信息安装的应用程序的可使用性,从而提供一种通用的、兼容的操作系统版本信息获取方法,为应用程序安装提供准确的操作系统版本信息获取功能,提升安装的应用程序的可使用性。图2为本发明的实施例二获取操作系统版本信息的装置结构示意图,如图2所示,本实施例的装置可以包括:第一函数调用模块21、提取模块22、主次版本号处理模块23、第二函数调用模块24以及版本信息获取模块25,其中,第一函数调用模块21,用于调用版本信息获取函数,获取当前操作系统主次版本信息;本实施例中,作为一可选实施例,版本信息获取函数包括GetVersionEx函数。其中,GetVersionEx函数包括:GetVersionExW函数以及GetVersionExA函数。本实施例中,作为一可选实施例,第一函数调用模块21包括:函数调用单元以及主次版本信息解析单元(图中未示出),其中,函数调用单元,用于调用版本信息获取函数;主次版本信息解析单元,用于从所述调用版本信息获取函数返回的版本结构信息中,解析获取当前操作系统主次版本信息。提取模块22,用于提取获取的所述当前操作系统主次版本信息中包含的主版本号以及次版本号;本实施例中,作为一可选实施例,调用GetVersionEx函数,从返回的OSVERSIONINFO信息中获取主版本号和次版本号。主次版本号处理模块23,如果所述主版本号大于或等于预先设置的主版本号阈值,且所述次版本号大于或等于预先设置的次版本号阈值;本实施例中,作为一可选实施例,所述主版本号阈值设置为6,次版本号阈值设置为2。本实施例中,作为一可选实施例,主次版本号处理模块23还用于如果所述主版本号小于预先设置的主版本号阈值,或,所述主版本号等于预先设置的主版本号阈值,且所述次版本号小于预先设置的次版本号阈值;查询预先设置的主次版本号与操作系统版本信息的映射关系集,获取所述主版本号和所述次版本号映射的操作系统版本信息。第二函数调用模块24,用于调用系统版本号获取函数,再次获取当前操作系统主次版本信息中包含的主版本号和次版本号;本实施例中,作为一可选实施例,系统版本号获取函数为RtlGetNtVersionNumbers函数,该RtlGetNtVersionNumbers函数为微软一未公开的未文档化的函数,在动态链接库模块(ntdll.dll)中定义和保存。本实施例中,作为一可选实施例,第二函数调用模块24包括:基地址获取单元、函数地址获取单元以及主次版本信息获取单元(图中未示出),其中,基地址获取单元,用于调用模块句柄获取函数,获取所述系统版本号获取函数所属的内核文件动态链接库模块的模块基地址;本实施例中,作为一可选实施例,模块句柄获取函数为::GetModuleHandle(_T(″ntdll.dll″))函数,内核文件动态链接库模块为ntdll.dll模块。函数地址获取单元,用于以所述模块基地址为参数,调用进程地址获取函数,获取所述系统版本号获取函数的函数地址;本实施例中,作为一可选实施例,进程地址获取函数为::GetProcAddress函数。主次版本信息获取单元,用于依据获取的函数地址,调用所述系统版本号获取函数,获取当前操作系统主次版本信息。版本信息获取模块25,用于查询预先设置的主次版本号与操作系统版本信息的映射关系集,获取再次获取的所述主版本号和所述次版本号映射的操作系统版本信息。本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,″计算机可读介质″可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。本发明实施例还提供一种电子设备,所述电子设备包含前述任一实施例所述的装置。图3为本发明电子设备一个实施例的结构示意图,可以实现本发明图1-2所示实施例的流程,如图3所示,上述电子设备可以包括:壳体31、处理器32、存储器33、电路板34和电源电路35,其中,电路板34安置在壳体31围成的空间内部,处理器32和存储器33设置在电路板34上;电源电路35,用于为上述电子设备的各个电路或器件供电;存储器33用于存储可执行程序代码;处理器32通过读取存储器33中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的获取操作系统版本信息的方法。处理器32对上述步骤的具体执行过程以及处理器32通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-2所示实施例的描述,在此不再赘述。该电子设备以多种形式存在,包括但不限于:(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。(5)其他具有数据交互功能的电子设备。本
技术领域
的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1