针对ArcGIS许可自动配置的APP分析与设计

谢小魁

(1.北部湾大学资源与环境学院;
2.钦州市海洋资源与环境遥感重点实验室;
3.广西北部湾海洋生物多样性养护重点实验室,广西钦州 535011)

地理信息系统(GIS)自20 世纪60 年代以来,在全球范围内得到了高度重视和广泛应用,无论在系统理论、研究方法、基础平台还是在应用开发等方面都快速发展[1]。当前,国际上使用较多、二次开发功能较强的GIS 平台有美国的ArcGIS[2]和MapInfo[3],以及国产的SuperMap[4]和MapGIS[5]。其中,ArcGIS 是目前主流的GIS 教学、研究、应用和开发平台[6-7]。使用Google Scholar 搜索关键词“GIS”、“ArcGIS”、“MapInfo”、”SuperMap GIS”、”MapGIS”,得到记录条数分别为321万、66.5万、4.13万、0.58万和2.63万。

一直以来,ArcGIS 许可安装和配置比较复杂,工程技术人员进行了一定探索,研究了多版本ArcGIS 应用虚拟化部署[8]、基于ArcGIS 平台的局域网安装环境搭建[9]、Arc-GIS Server 分布式体系结构研究与服务器部署策略[10]、Linux 环境下部署ArcGIS 平台服务器端的技术[11]等,这些为计算机专业人员部署ArcGIS 提供了参考信息。对科研工作者和地理信息专业的工程技术人员而言,使用较多的是ArcGIS for Desktop[6],目前未见文献对其许可原理进行分析,对许可流程也未见报道。并且,ArcGIS for Desktop安装过程过于复杂,通常需要反复尝试、多次安装才能成功。ArcGIS 初学者往往因为安装困难,望而却步,缺少继续学习下去的信心。机房管理员需要在数十台甚至数百台电脑上安装ArcGIS,如果手工配置许可,需要花费过长时间。同时,目前大量采取ArcGIS 插件模式[12],开发了很多实用工具[13-16],但可能由于许可配置过于复杂,很难在大众中推广开来。因此,有必要分析ArcGIS 的许可安装、许可服务运行和许可认证方式,为排除许可配置错误,编写许可自动配置APP 提供理论依据。

1.1 ArcGIS for Desktop许可运行机制

经过对软件的反复测试和分析发现,ArcGIS for Desktop 许可认证采用的是服务方式,每次启动都要进行认证。ArcGIS for Desktop 授权的许可服务器来源主要通过Arc-GIS Administrator(管理器)配置。ArcGIS License Server(许可服务器)提供许可服务,并进行管理(例如启动、停止服务)。进一步分析发现,ArcGIS for Desktop 的许可运行机制如图1 所示,涉及3 个主体:ArcGIS for Desktop、ArcGIS License Server 和ArcGIS Administrator。其中,ArcGIS Administrator 充当中介牵线搭桥的角色,在设置完ArcGIS for Desktop 的权限类型和来源后即可退出,甚至可以删除(卸载)。而ArcGIS for Desktop 在运行时,ArcGIS License Server必须一直运行,以提供授权服务。

Fig.1 Interaction process of ArcGIS licensing图1 ArcGIS 许可服务交互过程

1.2 许可服务分析方法

1.2.1 分析思路

为了快速排除手动配置许可产生的错误,或者编写自动化的许可配置程序,就必须获得ArcGIS for Desktop 许可认证所需要的所有交互信息,具体包括ArcGIS for Desktop的版本、安装路径和目录结构,ArcGIS License Server 的安装路径、目录结构和许可服务管理,以及ArcGIS Administrator的许可配置内容。

问题的出发点是这些信息存储在哪里,如何获取?首先需分析ArcGIS 的技术基础和所运行的操作系统。

(1)ArcGIS for Desktop 非常庞大,其技术基础是ArcObjects(AO)。AO 是COM 组件,而COM 组件的接口信息存储在Windows 注册表中[17-18]。

(2)对于Windows 操作系统,全局数据或者交互数据,例如版本信息,一般存储在注册表(register table)、INI 配置文件、XML 配置文件等。既然AO 基于COM 技术,大量采用注册表,那么为了统一,ArcGIS for Desktop 的许可认证交互信息可能也会优先考虑存储在Windows 注册表中。因此,下一步研究的重点是进一步探索注册表结构。

1.2.2 Windows注册表关键结构

注册表是Windows 操作系统、硬件设备及应用程序正常运行和保存设置的核心数据库,具有树状分层结构[19-20]。注册表数据信息保存在system.dat 和user.dat 中,利用regedit.exe 程序能够存取注册表文件。通过RegEdit命令打开注册表,发现其包括5 个根键(见图2),分别是HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG。其中,HKEY_LOCAL_MACHINE 存储本地计算机的系统信息,包括硬件和操作系统信息、安全数据和计算机专用的各类软件设置信息,因此是ArcGIS 许可分析需优先考虑的内容。

Fig.2 Root directory of registry table for Windows OS图2 Windows操作系统注册表根目录

2.1 ArcGIS for Desktop

ArcGIS for Desktop 主要包括ArcMap、ArcCatalog、Arc-Scene、ArcGlobe 等桌面程序。不同版本的ArcGIS for Desktop 相互冲突,不能安装在同一台电脑。实际上,任何基于AO 的软件都必须版本一致,包括ArcGIS for Desktop 及插件、ArcGIS Engine,或者其他基于AO 的软件。因此,获取ArcGIS版本号尤为重要。

2.1.1 版本信息

由于历史原因和商业战略,ArcGIS for Desktop 只有32位,没有64 位。根据上文对注册表的分析,软件版本信息的根键(基项)应该为HKEY_LOCAL_MACHINE。对于32位操作系统,软件全局信息的注册表路径一般为SOFTWARE<公司><软件>;
对于64 位操作系统,路径一般为SOFTWAREWow6432Node<公司><软件>。利用regedit程序打开注册表进行搜索、排查分析发现,ArcGIS for Desktop 的版本信息所对应的注册表存储在子键RealVersion 中,如表1所示。例如,对于ArcGIS 10.3,版本号为10.3.4322,对应的注册表项为“RealVersion REG_SZ 10.3.4322”。

Table 1 Registry table catalog for the version of ArcGIS for Desktop表1 ArcGIS for Desktop版本号的注册表目录

2.1.2 安装路径

获取版本号之后,再根据软件名称和版本获取安装路径。

经分析发现,在注册表中,ArcGIS for Desktop 软件名称为Desktop<主要版本号>.<次要版本号>。例如,对于ArcGIS for Desktop 10.3,在注册表中的名称为Desktop10.3。

进一步分析发现,在注册表中,ArcGIS for Desktop 的安装路径存储在“InstallDir”子键中,如表2所示。

例如,当安装路径为F:Program Files(x86)Arc-GISDesktop10.3,对应的注册表项为“InstallDir REG_SZ F:Program Files(x86)ArcGISDesktop10.3”。

Table 2 Registry table catalog for the installation directory of ArcGIS for Desktop表2 ArcGIS for Desktop安装路径的注册表目录

2.1.3 应用程序目录结构

通过分析文件系统结构发现,ArcGIS for Desktop 应用程序(.exe)所在路径为in。ArcGIS for Desktop 应用程序有ArcMap.exe、ArcCatalog.exe、ArcScene.exe、ArcGlobe.exe等。

2.1.4 注册表应用

通过注册表信息,可以获得ArcGIS for Desktop 的版本和安装路径;
结合目录结构和应用程序名称,可以提高手动操作的灵活性,也可以开发程序并进行自动化处理。

手工处理:在不使用开始/程序菜单(例如Win8操作系统)的条件下,可以用文件管理器直接导航到应用程序文件夹in进行操作。

自动处理:编写程序从注册表读取安装路径,利用应用程序目录结构,打开对应的程序。

2.2 License Manager Administrator

License Manager Administrator(许可服务器管理器)对许可服务进行管理,包括启动服务、暂停服务、重启服务等。

2.2.1 安装路径

通过许可服务器关键字在注册表中进行查找发现,许可服务器安装路径信息的注册表项为:对于32 位操作系统,路径为HKEY_LOCAL_MACHINE SOFTWAREESRIArcGIS 10.3 License Manager;
对于64 位操作系统,路径为HKEY_LOCAL_MACHINESOFTWAREWow6432NodeE SRIArcGIS 10.3 License Manager;
子键为InstallDir;
值类型为REG_SZ,为字符串,例如“F:Program Files(x86)Arc-GISLicense10.3”。

2.2.2 目录结构

in目录下,主要有许可服务器lmgrd.exe(Windows任务管理器中可见此进程),还有另外几个重要文件:授权文件service.txt、许可服务器管理器LSAdmin.exe、许可导入程序SoftwareAuthorizationLS.exe和ARCGIS.exe。

2.2.3 许可服务器管理

许可服务器为lmgrd.exe,其服务名称为ArcGIS License Manager。可以通过ArcGIS许可服务器管理器LSAdmin.exe对服务进行管理,如图3(a)所示。在不使用ArcGIS软件时可手动停止服务,在需要时再启动服务;
也可通过Windows操作系统的服务管理ArcGIS许可服务,如图3(b)所示。

Fig.3 Managing license service图3 管理许可服务

2.2.4 注册表应用

通过编写程序,在注册表中找到许可服务器安装路径,通过操作许可文件service.txt 自动对软件进行授权。在更改授权前,需先停止服务,修改后要启动服务。

还可以编写程序,利用许可服务名称查找服务,判断服务是否安装,获得当前服务状态(是否运行、停止或正在启动),以及按需启动服务和停止服务,也可以通过定时器触发这些操作。

2.3 ArcGIS Administrator分析

2.3.1 许可配置

ArcGIS Administrator(管理器)可以对ArcGIS for Desktop 的许可来源进行配置(见图4),包括软件功能、许可类型,以及许可管理器地址。软件功能分为高级版(相当于ArcInfo)、标准版(相当于ArcEditor)和基础版(相当于ArcView);
许可类型分为浮动版、单机版。

Fig.4 Configure license for ArcGIS for Desktop by ArcGIS administrator图4 ArcGIS管理器配置ArcGIS for Desktop许可

2.3.2 许可服务器地址

许可服务器地址可以是计算机名称、IP 地址等,通过在ArcGIS Administrator 反复修改许可服务器地址,然后在注册表中查找对应的信息,并结合相似路径分析,可以找到对应的注册表。对于32 位操作系统,许可服务器地址的注册表路径为 HKEY_LOCAL_MACHINE SOFTWAREESRILicense10.3,对于64 位操作系统,路径为SOFTWAREWow6432NodeESRILicense10.3;
子键为LICENSE_SERVER;
值类型为REG_SZ。当许可服务器地址设置为本机(localhost)时,值为“@localhost”。

2.3.3 许可服务器类型

进一步分析发现,在注册表中,许可类型在注册表中存储路径:对于32 位操作系统为HKEY_LOCAL_MACHINESOFTWAREESRILicense10.3;
对于64 位操作系统为HKEY_LOCAL_MACHINESOFTWAREWow6432NodeESRILicense10.3;
子键为SEAT_PREFERENCE;
数据类型为REG_SZ;
当许可类型为floa(t浮动)时,值为“Float”。

在注册表中可以获取或设置许可服务器的类型和地址。例如,对机房所有电脑安装的ArcGIS for Desktop 的许可全部定向到某一许可服务器。如果许可服务器发生了更新、升级等,自动对ArcGIS for Desktop 的许可进行更改。基于许可服务器注册表分析结果,了解其原理,就可以开发出许可自动配置程序。

3.1 许可自动配置程序设计

(1)开发语言选择。开发语言(支持平台)需能够方便地读写注册表、访问文件系统(以读写许可文件)、访问系统服务(以启动、停止许可服务),具有快速开发、界面设计和调试方便等优点,在Windows 平台可选Python 和C#。Python 虽然具有良好的计算生态,开发速度快,但存在界面设计不便、调试困难等缺点,因此本文选择C#作为开发语言。

(2)开发界面可采用WinForm 或WPF 进行设计。本文选择WPF,以自适应屏幕分辨率变化。

(3)程序功能包括手动设置许可(位于窗体的左边)、自动设置许可(位于窗体的右边)。

3.2 许可自动配置程序开发结果

手动设置许可是通过点击按钮进行版本检测、许可服务器状态监测、启动和停止许可服务、删除原有许可、更新许可等操作。

自动设置许可是设置经典许可(已经安装了许可服务器LicenseManger),也可以设置简易许可(不用安装许可服务器)。

最后提供了2 个小工具,一个是读取ESRI 全部的注册表信息,方便高级管理员分析安装的ESRI 产品;
一个是读取ESRI 几个主要的注册表信息,用于辅助分析软件运行情况。程序运行效果如图5所示。

Fig.5 Auto-license configuration APP for ArcGIS图5 ArcGIS自动许可配置程序

本文通过逻辑分析、反复测试,揭示了ArcGIS 许可运行机制及相关注册表信息,为排除许可配置错误、开发自动配置软件提供了全面的理论支撑。基于此原理开发自动配置许可APP,可以读取注册表、修改注册表,即可直接修改许可认证方式,无需手动交互操作ArcGIS License Administraot 或ArcGIS Administrator,从而达到自动化、批量化目的。该App 跨Windows 操作系统版本(32 位、64 位),跨ArcGIS 版本(9.2-10.8),具有较强的通用性、较好的实用性。因为使用C#开发,所以需要安装.NET Framework。

该APP 可用于个人初学者辅助安装ArcGIS,对实验室大规模安装有显著效果。同时,本文分析结论对安装和配置二次开发的Python 脚本、插件(Addin)和工具箱(toolbox)有较大启发作用[12]。自动配置许可APP 源代码(C#)和编译好的应用程序(exe)可以从百度网盘下载,链接:https://pan.baidu.com/s/113DOUeofJ1X6FfeZo-G7NA 提取码:s2ja。需特别说明的是,该APP 仅限于学习和研究之用,不得用于商业用途。出于演示需要,本文上传了ArcGIS 10.2 和10.3的许可,这些许可均来自网络。

猜你喜欢 管理器注册表许可 启动Windows11任务管理器的几种方法计算机与网络(2021年22期)2021-01-13应急状态启动磁盘管理器电脑爱好者(2020年10期)2020-07-28关于许可对人大代表采取强制措施制度的探讨人大建设(2018年3期)2018-06-06更上一层楼 用好注册表编辑器电脑爱好者(2017年24期)2017-12-27注册表的便捷用法电脑爱好者(2016年21期)2016-12-16用好Windows 10任务管理器电脑爱好者(2016年20期)2016-12-16背对背拥抱恋爱婚姻家庭·养生版(2010年11期)2010-05-14注册表编辑器也玩“失忆”计算机应用文摘·触控(2009年19期)2009-09-27在Win 7下利用凭据管理器提高访问速度等网络与信息(2009年11期)2009-05-12学习器揭开注册表面纱移动一族(2009年3期)2009-05-12

推荐访问:配置 分析 设计