謝小魁
(1.北部灣大學(xué)資源與環(huán)境學(xué)院;2.欽州市海洋資源與環(huán)境遙感重點(diǎn)實(shí)驗(yàn)室;3.廣西北部灣海洋生物多樣性養(yǎng)護(hù)重點(diǎn)實(shí)驗(yàn)室,廣西欽州 535011)
地理信息系統(tǒng)(GIS)自20 世紀(jì)60 年代以來,在全球范圍內(nèi)得到了高度重視和廣泛應(yīng)用,無論在系統(tǒng)理論、研究方法、基礎(chǔ)平臺還是在應(yīng)用開發(fā)等方面都快速發(fā)展[1]。當(dāng)前,國際上使用較多、二次開發(fā)功能較強(qiáng)的GIS 平臺有美國的ArcGIS[2]和MapInfo[3],以及國產(chǎn)的SuperMap[4]和MapGIS[5]。其中,ArcGIS 是目前主流的GIS 教學(xué)、研究、應(yīng)用和開發(fā)平臺[6-7]。使用Google Scholar 搜索關(guān)鍵詞“GIS”、“ArcGIS”、“MapInfo”、”SuperMap GIS”、”MapGIS”,得到記錄條數(shù)分別為321萬、66.5萬、4.13萬、0.58萬和2.63萬。
一直以來,ArcGIS 許可安裝和配置比較復(fù)雜,工程技術(shù)人員進(jìn)行了一定探索,研究了多版本ArcGIS 應(yīng)用虛擬化部署[8]、基于ArcGIS 平臺的局域網(wǎng)安裝環(huán)境搭建[9]、Arc-GIS Server 分布式體系結(jié)構(gòu)研究與服務(wù)器部署策略[10]、Linux 環(huán)境下部署ArcGIS 平臺服務(wù)器端的技術(shù)[11]等,這些為計(jì)算機(jī)專業(yè)人員部署ArcGIS 提供了參考信息。對科研工作者和地理信息專業(yè)的工程技術(shù)人員而言,使用較多的是ArcGIS for Desktop[6],目前未見文獻(xiàn)對其許可原理進(jìn)行分析,對許可流程也未見報(bào)道。并且,ArcGIS for Desktop安裝過程過于復(fù)雜,通常需要反復(fù)嘗試、多次安裝才能成功。ArcGIS 初學(xué)者往往因?yàn)榘惭b困難,望而卻步,缺少繼續(xù)學(xué)習(xí)下去的信心。機(jī)房管理員需要在數(shù)十臺甚至數(shù)百臺電腦上安裝ArcGIS,如果手工配置許可,需要花費(fèi)過長時(shí)間。同時(shí),目前大量采取ArcGIS 插件模式[12],開發(fā)了很多實(shí)用工具[13-16],但可能由于許可配置過于復(fù)雜,很難在大眾中推廣開來。因此,有必要分析ArcGIS 的許可安裝、許可服務(wù)運(yùn)行和許可認(rèn)證方式,為排除許可配置錯誤,編寫許可自動配置APP 提供理論依據(jù)。
經(jīng)過對軟件的反復(fù)測試和分析發(fā)現(xiàn),ArcGIS for Desktop 許可認(rèn)證采用的是服務(wù)方式,每次啟動都要進(jìn)行認(rèn)證。ArcGIS for Desktop 授權(quán)的許可服務(wù)器來源主要通過Arc-GIS Administrator(管理器)配置。ArcGIS License Server(許可服務(wù)器)提供許可服務(wù),并進(jìn)行管理(例如啟動、停止服務(wù))。進(jìn)一步分析發(fā)現(xiàn),ArcGIS for Desktop 的許可運(yùn)行機(jī)制如圖1 所示,涉及3 個(gè)主體:ArcGIS for Desktop、ArcGIS License Server 和ArcGIS Administrator。其中,ArcGIS Administrator 充當(dāng)中介牽線搭橋的角色,在設(shè)置完ArcGIS for Desktop 的權(quán)限類型和來源后即可退出,甚至可以刪除(卸載)。而ArcGIS for Desktop 在運(yùn)行時(shí),ArcGIS License Server必須一直運(yùn)行,以提供授權(quán)服務(wù)。
Fig.1 Interaction process of ArcGIS licensing圖1 ArcGIS 許可服務(wù)交互過程
1.2.1 分析思路
為了快速排除手動配置許可產(chǎn)生的錯誤,或者編寫自動化的許可配置程序,就必須獲得ArcGIS for Desktop 許可認(rèn)證所需要的所有交互信息,具體包括ArcGIS for Desktop的版本、安裝路徑和目錄結(jié)構(gòu),ArcGIS License Server 的安裝路徑、目錄結(jié)構(gòu)和許可服務(wù)管理,以及ArcGIS Administrator的許可配置內(nèi)容。
問題的出發(fā)點(diǎn)是這些信息存儲在哪里,如何獲???首先需分析ArcGIS 的技術(shù)基礎(chǔ)和所運(yùn)行的操作系統(tǒng)。
(1)ArcGIS for Desktop 非常龐大,其技術(shù)基礎(chǔ)是ArcObjects(AO)。AO 是COM 組件,而COM 組件的接口信息存儲在Windows 注冊表中[17-18]。
(2)對于Windows 操作系統(tǒng),全局?jǐn)?shù)據(jù)或者交互數(shù)據(jù),例如版本信息,一般存儲在注冊表(register table)、INI 配置文件、XML 配置文件等。既然AO 基于COM 技術(shù),大量采用注冊表,那么為了統(tǒng)一,ArcGIS for Desktop 的許可認(rèn)證交互信息可能也會優(yōu)先考慮存儲在Windows 注冊表中。因此,下一步研究的重點(diǎn)是進(jìn)一步探索注冊表結(jié)構(gòu)。
1.2.2 Windows注冊表關(guān)鍵結(jié)構(gòu)
注冊表是Windows 操作系統(tǒng)、硬件設(shè)備及應(yīng)用程序正常運(yùn)行和保存設(shè)置的核心數(shù)據(jù)庫,具有樹狀分層結(jié)構(gòu)[19-20]。注冊表數(shù)據(jù)信息保存在system.dat 和user.dat 中,利用regedit.exe 程序能夠存取注冊表文件。通過RegEdit命令打開注冊表,發(fā)現(xiàn)其包括5 個(gè)根鍵(見圖2),分別是HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_CONFIG。其中,HKEY_LOCAL_MACHINE 存儲本地計(jì)算機(jī)的系統(tǒng)信息,包括硬件和操作系統(tǒng)信息、安全數(shù)據(jù)和計(jì)算機(jī)專用的各類軟件設(shè)置信息,因此是ArcGIS 許可分析需優(yōu)先考慮的內(nèi)容。
Fig.2 Root directory of registry table for Windows OS圖2 Windows操作系統(tǒng)注冊表根目錄
ArcGIS for Desktop 主要包括ArcMap、ArcCatalog、Arc-Scene、ArcGlobe 等桌面程序。不同版本的ArcGIS for Desktop 相互沖突,不能安裝在同一臺電腦。實(shí)際上,任何基于AO 的軟件都必須版本一致,包括ArcGIS for Desktop 及插件、ArcGIS Engine,或者其他基于AO 的軟件。因此,獲取ArcGIS版本號尤為重要。
2.1.1 版本信息
由于歷史原因和商業(yè)戰(zhàn)略,ArcGIS for Desktop 只有32位,沒有64 位。根據(jù)上文對注冊表的分析,軟件版本信息的根鍵(基項(xiàng))應(yīng)該為HKEY_LOCAL_MACHINE。對于32位操作系統(tǒng),軟件全局信息的注冊表路徑一般為SOFTWARE<公司><軟件>;對于64 位操作系統(tǒng),路徑一般為SOFTWAREWow6432Node<公司><軟件>。利用regedit程序打開注冊表進(jìn)行搜索、排查分析發(fā)現(xiàn),ArcGIS for Desktop 的版本信息所對應(yīng)的注冊表存儲在子鍵RealVersion 中,如表1所示。例如,對于ArcGIS 10.3,版本號為10.3.4322,對應(yīng)的注冊表項(xiàng)為“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 安裝路徑
獲取版本號之后,再根據(jù)軟件名稱和版本獲取安裝路徑。
經(jīng)分析發(fā)現(xiàn),在注冊表中,ArcGIS for Desktop 軟件名稱為Desktop<主要版本號>.<次要版本號>。例如,對于ArcGIS for Desktop 10.3,在注冊表中的名稱為Desktop10.3。
進(jìn)一步分析發(fā)現(xiàn),在注冊表中,ArcGIS for Desktop 的安裝路徑存儲在“InstallDir”子鍵中,如表2所示。
例如,當(dāng)安裝路徑為F:Program Files(x86)Arc-GISDesktop10.3,對應(yīng)的注冊表項(xiàng)為“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 應(yīng)用程序目錄結(jié)構(gòu)
通過分析文件系統(tǒng)結(jié)構(gòu)發(fā)現(xiàn),ArcGIS for Desktop 應(yīng)用程序(.exe)所在路徑為
2.1.4 注冊表應(yīng)用
通過注冊表信息,可以獲得ArcGIS for Desktop 的版本和安裝路徑;結(jié)合目錄結(jié)構(gòu)和應(yīng)用程序名稱,可以提高手動操作的靈活性,也可以開發(fā)程序并進(jìn)行自動化處理。
手工處理:在不使用開始/程序菜單(例如Win8操作系統(tǒng))的條件下,可以用文件管理器直接導(dǎo)航到應(yīng)用程序文件夾
自動處理:編寫程序從注冊表讀取安裝路徑,利用應(yīng)用程序目錄結(jié)構(gòu),打開對應(yīng)的程序。
License Manager Administrator(許可服務(wù)器管理器)對許可服務(wù)進(jìn)行管理,包括啟動服務(wù)、暫停服務(wù)、重啟服務(wù)等。
2.2.1 安裝路徑
通過許可服務(wù)器關(guān)鍵字在注冊表中進(jìn)行查找發(fā)現(xiàn),許可服務(wù)器安裝路徑信息的注冊表項(xiàng)為:對于32 位操作系統(tǒng),路徑為HKEY_LOCAL_MACHINE SOFTWAREESRIArcGIS 10.3 License Manager;對于64 位操作系統(tǒng),路徑為HKEY_LOCAL_MACHINESOFTWAREWow6432NodeE SRIArcGIS 10.3 License Manager;子鍵為InstallDir;值類型為REG_SZ,為字符串,例如“F:Program Files(x86)Arc-GISLicense10.3”。
2.2.2 目錄結(jié)構(gòu)
在
2.2.3 許可服務(wù)器管理
許可服務(wù)器為lmgrd.exe,其服務(wù)名稱為ArcGIS License Manager??梢酝ㄟ^ArcGIS許可服務(wù)器管理器LSAdmin.exe對服務(wù)進(jìn)行管理,如圖3(a)所示。在不使用ArcGIS軟件時(shí)可手動停止服務(wù),在需要時(shí)再啟動服務(wù);也可通過Windows操作系統(tǒng)的服務(wù)管理ArcGIS許可服務(wù),如圖3(b)所示。
Fig.3 Managing license service圖3 管理許可服務(wù)
2.2.4 注冊表應(yīng)用
通過編寫程序,在注冊表中找到許可服務(wù)器安裝路徑,通過操作許可文件service.txt 自動對軟件進(jìn)行授權(quán)。在更改授權(quán)前,需先停止服務(wù),修改后要啟動服務(wù)。
還可以編寫程序,利用許可服務(wù)名稱查找服務(wù),判斷服務(wù)是否安裝,獲得當(dāng)前服務(wù)狀態(tài)(是否運(yùn)行、停止或正在啟動),以及按需啟動服務(wù)和停止服務(wù),也可以通過定時(shí)器觸發(fā)這些操作。
2.3.1 許可配置
ArcGIS Administrator(管理器)可以對ArcGIS for Desktop 的許可來源進(jìn)行配置(見圖4),包括軟件功能、許可類型,以及許可管理器地址。軟件功能分為高級版(相當(dāng)于ArcInfo)、標(biāo)準(zhǔn)版(相當(dāng)于ArcEditor)和基礎(chǔ)版(相當(dāng)于ArcView);許可類型分為浮動版、單機(jī)版。
Fig.4 Configure license for ArcGIS for Desktop by ArcGIS administrator圖4 ArcGIS管理器配置ArcGIS for Desktop許可
2.3.2 許可服務(wù)器地址
許可服務(wù)器地址可以是計(jì)算機(jī)名稱、IP 地址等,通過在ArcGIS Administrator 反復(fù)修改許可服務(wù)器地址,然后在注冊表中查找對應(yīng)的信息,并結(jié)合相似路徑分析,可以找到對應(yīng)的注冊表。對于32 位操作系統(tǒng),許可服務(wù)器地址的注冊表路徑為 HKEY_LOCAL_MACHINE SOFTWAREESRILicense10.3,對于64 位操作系統(tǒng),路徑為SOFTWAREWow6432NodeESRILicense10.3;子鍵為LICENSE_SERVER;值類型為REG_SZ。當(dāng)許可服務(wù)器地址設(shè)置為本機(jī)(localhost)時(shí),值為“@localhost”。
2.3.3 許可服務(wù)器類型
進(jìn)一步分析發(fā)現(xiàn),在注冊表中,許可類型在注冊表中存儲路徑:對于32 位操作系統(tǒng)為HKEY_LOCAL_MACHINESOFTWAREESRILicense10.3;對于64 位操作系統(tǒng)為HKEY_LOCAL_MACHINESOFTWAREWow6432NodeESRILicense10.3;子鍵為SEAT_PREFERENCE;數(shù)據(jù)類型為REG_SZ;當(dāng)許可類型為floa(t浮動)時(shí),值為“Float”。
在注冊表中可以獲取或設(shè)置許可服務(wù)器的類型和地址。例如,對機(jī)房所有電腦安裝的ArcGIS for Desktop 的許可全部定向到某一許可服務(wù)器。如果許可服務(wù)器發(fā)生了更新、升級等,自動對ArcGIS for Desktop 的許可進(jìn)行更改?;谠S可服務(wù)器注冊表分析結(jié)果,了解其原理,就可以開發(fā)出許可自動配置程序。
(1)開發(fā)語言選擇。開發(fā)語言(支持平臺)需能夠方便地讀寫注冊表、訪問文件系統(tǒng)(以讀寫許可文件)、訪問系統(tǒng)服務(wù)(以啟動、停止許可服務(wù)),具有快速開發(fā)、界面設(shè)計(jì)和調(diào)試方便等優(yōu)點(diǎn),在Windows 平臺可選Python 和C#。Python 雖然具有良好的計(jì)算生態(tài),開發(fā)速度快,但存在界面設(shè)計(jì)不便、調(diào)試?yán)щy等缺點(diǎn),因此本文選擇C#作為開發(fā)語言。
(2)開發(fā)界面可采用WinForm 或WPF 進(jìn)行設(shè)計(jì)。本文選擇WPF,以自適應(yīng)屏幕分辨率變化。
(3)程序功能包括手動設(shè)置許可(位于窗體的左邊)、自動設(shè)置許可(位于窗體的右邊)。
手動設(shè)置許可是通過點(diǎn)擊按鈕進(jìn)行版本檢測、許可服務(wù)器狀態(tài)監(jiān)測、啟動和停止許可服務(wù)、刪除原有許可、更新許可等操作。
自動設(shè)置許可是設(shè)置經(jīng)典許可(已經(jīng)安裝了許可服務(wù)器LicenseManger),也可以設(shè)置簡易許可(不用安裝許可服務(wù)器)。
最后提供了2 個(gè)小工具,一個(gè)是讀取ESRI 全部的注冊表信息,方便高級管理員分析安裝的ESRI 產(chǎn)品;一個(gè)是讀取ESRI 幾個(gè)主要的注冊表信息,用于輔助分析軟件運(yùn)行情況。程序運(yùn)行效果如圖5所示。
Fig.5 Auto-license configuration APP for ArcGIS圖5 ArcGIS自動許可配置程序
本文通過邏輯分析、反復(fù)測試,揭示了ArcGIS 許可運(yùn)行機(jī)制及相關(guān)注冊表信息,為排除許可配置錯誤、開發(fā)自動配置軟件提供了全面的理論支撐?;诖嗽黹_發(fā)自動配置許可APP,可以讀取注冊表、修改注冊表,即可直接修改許可認(rèn)證方式,無需手動交互操作ArcGIS License Administraot 或ArcGIS Administrator,從而達(dá)到自動化、批量化目的。該App 跨Windows 操作系統(tǒng)版本(32 位、64 位),跨ArcGIS 版本(9.2-10.8),具有較強(qiáng)的通用性、較好的實(shí)用性。因?yàn)槭褂肅#開發(fā),所以需要安裝.NET Framework。
該APP 可用于個(gè)人初學(xué)者輔助安裝ArcGIS,對實(shí)驗(yàn)室大規(guī)模安裝有顯著效果。同時(shí),本文分析結(jié)論對安裝和配置二次開發(fā)的Python 腳本、插件(Addin)和工具箱(toolbox)有較大啟發(fā)作用[12]。自動配置許可APP 源代碼(C#)和編譯好的應(yīng)用程序(exe)可以從百度網(wǎng)盤下載,鏈接:https://pan.baidu.com/s/113DOUeofJ1X6FfeZo-G7NA 提取碼:s2ja。需特別說明的是,該APP 僅限于學(xué)習(xí)和研究之用,不得用于商業(yè)用途。出于演示需要,本文上傳了ArcGIS 10.2 和10.3的許可,這些許可均來自網(wǎng)絡(luò)。