一種基于 Linux 的注冊表服務(wù)系統(tǒng)、方法及金融自助設(shè)備的制造方法
【專利摘要】本發(fā)明公開了一種基于Linux的注冊表服務(wù)系統(tǒng),包括:內(nèi)存注冊表構(gòu)建單元,用于加載操作系統(tǒng)下的注冊表數(shù)據(jù)文件,并通過數(shù)據(jù)庫接口讀取所述注冊表數(shù)據(jù)文件中已保存的配置表數(shù)據(jù),在內(nèi)存中構(gòu)建內(nèi)存注冊表;注冊表操作單元,用于從注冊表編輯器或者用戶進(jìn)程中收集節(jié)點(diǎn)數(shù)據(jù),并將節(jié)點(diǎn)數(shù)據(jù)傳輸給注冊表服務(wù)單元;注冊表服務(wù)單元,用于根據(jù)針對(duì)內(nèi)存注冊表的操作方式,對(duì)內(nèi)存注冊表中與節(jié)點(diǎn)數(shù)據(jù)對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行相應(yīng)的操作。本發(fā)明還公開了一種基于Linux的注冊表服務(wù)方法及金融自助設(shè)備,通過在內(nèi)存中對(duì)內(nèi)存注冊表中進(jìn)行節(jié)點(diǎn)數(shù)據(jù)的操作,可為運(yùn)行的所有軟件提供一種統(tǒng)一、高效、安全的注冊表配置數(shù)據(jù)操作,滿足各個(gè)進(jìn)程間數(shù)據(jù)共享的需求。
【專利說明】
一種基于Linux的注冊表服務(wù)系統(tǒng)、方法及金融自助設(shè)備
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及自助終端領(lǐng)域,尤其涉及一種基于Linux的注冊表服務(wù)系統(tǒng)、方法及金融自助設(shè)備。
【背景技術(shù)】
[0002]注冊表是windows操作系統(tǒng)中的一個(gè)核心數(shù)據(jù)庫,其中存放著各種參數(shù),直接控制著windows的啟動(dòng)、硬件驅(qū)動(dòng)程序的裝載以及一些windows應(yīng)用程序的運(yùn)行,從而在整個(gè)系統(tǒng)中起著核心作用。這些作用包括了軟、硬件的相關(guān)配置和狀態(tài)信息,比如注冊表中保存有應(yīng)用程序和資源管理器外殼(shell)的初始條件、首選項(xiàng)和卸載數(shù)據(jù)等,聯(lián)網(wǎng)計(jì)算機(jī)的整個(gè)系統(tǒng)的設(shè)置和各種許可,文件擴(kuò)展名與應(yīng)用程序的關(guān)聯(lián),硬件部件的描述、狀態(tài)和屬性,性能記錄和其他底層的系統(tǒng)狀態(tài)信息,以及其他數(shù)據(jù)等。
[0003]在Linux系統(tǒng)下沒有類似Windows系統(tǒng)下的注冊表服務(wù),Linux系統(tǒng)下沒有臨時(shí)配置數(shù)據(jù)的操作接口,也就是存放在內(nèi)存的臨時(shí)配置數(shù)據(jù)的操作接口。
[0004]然而出于安全性的考慮,在金融行業(yè)應(yīng)用中,一般使用Linux系統(tǒng)。為了解決數(shù)據(jù)配置問題,現(xiàn)在的自主可控Linux系統(tǒng)中,可以通過內(nèi)存配置表確保災(zāi)難情況下內(nèi)存數(shù)據(jù)的有效備份和還原。但是程序?qū)ε渲玫淖x取與保存大多在直接在文件中進(jìn)行,沒有統(tǒng)一的接口操作,不方便各個(gè)系統(tǒng)間代碼兼容移植,而且這種讀取數(shù)據(jù)的速度較慢,無法保證注冊表的修改安全和多并發(fā)訪問的安全。
【發(fā)明內(nèi)容】
[0005]針對(duì)上述問題,本發(fā)明的目的在于提供一種基于Linux的注冊表服務(wù)系統(tǒng)、方法及金融自助設(shè)備,可實(shí)現(xiàn)兼容性好,讀寫安全與多并發(fā)訪問安全的注冊表服務(wù)
[0006]本發(fā)明提供了一種基于Linux的注冊表服務(wù)系統(tǒng),包括:
[0007]內(nèi)存注冊表構(gòu)建單元,用于加載操作系統(tǒng)下的注冊表數(shù)據(jù)文件,并通過數(shù)據(jù)庫接口讀取所述注冊表數(shù)據(jù)文件中已保存的配置表數(shù)據(jù),在內(nèi)存中構(gòu)建內(nèi)存注冊表;
[0008]注冊表操作單元,用于從注冊表編輯器或者用戶進(jìn)程中收集節(jié)點(diǎn)數(shù)據(jù),并將所述節(jié)點(diǎn)數(shù)據(jù)傳輸給注冊表服務(wù)單元;
[0009]所述注冊表服務(wù)單元,用于根據(jù)針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表中與所述節(jié)點(diǎn)數(shù)據(jù)對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果向所述注冊表操作單元返回操作確認(rèn)符;其中,所述操作方式為讀取、寫入、刪除中的一種。
[0010]優(yōu)選地,所述內(nèi)存注冊表為一種將臨時(shí)配置數(shù)據(jù)根據(jù)預(yù)先設(shè)計(jì)好的數(shù)據(jù)結(jié)構(gòu)寫入內(nèi)存中,而不寫入磁盤的配置表,其中,所述內(nèi)存注冊表由至少一個(gè)節(jié)點(diǎn)構(gòu)成,每個(gè)節(jié)點(diǎn)包括主節(jié)點(diǎn)及子節(jié)點(diǎn),所述主節(jié)點(diǎn)包括主節(jié)點(diǎn)id,所述子節(jié)點(diǎn)包括子節(jié)點(diǎn)id及節(jié)點(diǎn)數(shù)據(jù)值。
[0011]優(yōu)選地,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)及子節(jié)點(diǎn),所述主節(jié)點(diǎn)包括主節(jié)點(diǎn)id,所述子節(jié)點(diǎn)包括子節(jié)點(diǎn)id及節(jié)點(diǎn)數(shù)據(jù)值;所述操作方式為讀?。?br>[0012]則所述注冊表服務(wù)單元具體包括:
[0013]第一id獲取模塊,用于從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id;
[0014]讀取模塊,用于將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則讀取所述節(jié)點(diǎn)數(shù)據(jù)中的節(jié)點(diǎn)數(shù)據(jù)值,并向所述注冊表操作單元返回所述節(jié)點(diǎn)數(shù)據(jù)及確認(rèn)字符;若沒有,則向所述注冊表操作單元返回否定應(yīng)答字符;
[0015]所述注冊表操作單元,還用于在接收到所述確認(rèn)字符和所述節(jié)點(diǎn)數(shù)據(jù)后,確認(rèn)讀取操作成功,并將所述節(jié)點(diǎn)數(shù)據(jù)傳遞至所述注冊表編輯器或所述用戶進(jìn)程;在接收到所述否定應(yīng)答字符后,確認(rèn)讀取操作失敗,并向所述注冊表編輯器或所述用戶進(jìn)程反饋?zhàn)x取失敗信息。
[0016]優(yōu)選地,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)id、子節(jié)點(diǎn)id、節(jié)點(diǎn)數(shù)據(jù)值及臨時(shí)數(shù)據(jù)標(biāo)記;所述操作方式為寫入;
[0017]則所述注冊表服務(wù)單元具體包括:
[0018]第二id獲取模塊,用于從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id;
[0019]寫入模塊,用于將所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則將查詢到的所述節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)值修改為所述節(jié)點(diǎn)數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)值;若沒有,則將所述節(jié)點(diǎn)數(shù)據(jù)添加到所述內(nèi)存注冊表中;
[0020]第一臨時(shí)數(shù)據(jù)判斷模塊,用于判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為0,若是,則向所述注冊表操作單元返回確認(rèn)字符;若不是,則調(diào)用所述數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)寫入到所述注冊表數(shù)據(jù)文件中,并向所述注冊表操作單元返回確認(rèn)字符。
[0021]優(yōu)選地,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)id、子節(jié)點(diǎn)id、節(jié)點(diǎn)數(shù)據(jù)值及臨時(shí)數(shù)據(jù)標(biāo)記;所述操作方式為刪除;
[0022]則所述注冊表服務(wù)單元具體包括:
[0023]第三id獲取模塊,用于從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id;
[0024]刪除模塊,用于將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則刪除所述節(jié)點(diǎn),并通知第二臨時(shí)數(shù)據(jù)判斷模塊;若沒有,則向所述注冊表操作單元返回否定應(yīng)答字符;
[0025]所述第二臨時(shí)數(shù)據(jù)判斷模塊,用于判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為O,若是,則向所述注冊表操作單元返回確認(rèn)字符;若不是,則調(diào)用所述數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)從所述注冊表數(shù)據(jù)文件中刪除,并向所述注冊表操作單元返回確認(rèn)字符。
[0026]本發(fā)明還提供一種基于Linux的注冊表服務(wù)方法,包括:
[0027]加載操作系統(tǒng)下的注冊表數(shù)據(jù)文件,并通過數(shù)據(jù)庫接口讀取所述注冊表數(shù)據(jù)文件中已保存的配置表數(shù)據(jù),在內(nèi)存中構(gòu)建內(nèi)存注冊表;
[0028]從注冊表編輯器或者用戶進(jìn)程中收集節(jié)點(diǎn)數(shù)據(jù);
[0029]根據(jù)針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表中與所述節(jié)點(diǎn)數(shù)對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果生成操作確認(rèn)符;其中,所述操作方式為讀取、寫入、刪除中的一種。
[0030]優(yōu)選地,所述內(nèi)存注冊表為一種將臨時(shí)配置數(shù)據(jù)根據(jù)預(yù)先設(shè)計(jì)好的數(shù)據(jù)結(jié)構(gòu)寫入內(nèi)存中,而不寫入磁盤的配置表,其中,所述內(nèi)存注冊表由至少一個(gè)節(jié)點(diǎn)構(gòu)成,每個(gè)節(jié)點(diǎn)至少包括主節(jié)點(diǎn)i d、子節(jié)點(diǎn)i d及節(jié)點(diǎn)數(shù)據(jù)值。
[0031]優(yōu)選地,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)id、子節(jié)點(diǎn)id及節(jié)點(diǎn)數(shù)據(jù)值;所述操作方式為讀??;
[0032]則所述根據(jù)所述節(jié)點(diǎn)數(shù)據(jù)及針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果生成操作確認(rèn)符,具體包括:
[0033]從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id;
[0034]將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則讀取所述節(jié)點(diǎn)數(shù)據(jù)中的節(jié)點(diǎn)數(shù)據(jù)值,并生成確認(rèn)字符;若沒有,則生成否定應(yīng)答字符。
[0035]優(yōu)選地,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)id、子節(jié)點(diǎn)id、節(jié)點(diǎn)數(shù)據(jù)值及臨時(shí)數(shù)據(jù)標(biāo)記;所述操作方式為寫入;
[0036]則所述根據(jù)所述節(jié)點(diǎn)數(shù)據(jù)及針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果生成操作確認(rèn)符,具體包括:
[0037 ]從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id ;
[0038]將所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則將查詢到的所述節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)值修改為所述節(jié)點(diǎn)數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)值;若沒有,則將所述節(jié)點(diǎn)數(shù)據(jù)添加到所述內(nèi)存注冊表中;
[0039]判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為0,若是,則生成確認(rèn)字符;若不是,則在調(diào)用數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)寫入到所述注冊表數(shù)據(jù)文件中后,生成確認(rèn)字符。
[0040]優(yōu)選地,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)id、子節(jié)點(diǎn)id、節(jié)點(diǎn)數(shù)據(jù)值及臨時(shí)數(shù)據(jù)標(biāo)記;所述操作方式為刪除;
[0041]則所述根據(jù)所述節(jié)點(diǎn)數(shù)據(jù)及針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果生成操作確認(rèn)符,具體包括:
[0042]從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id;
[0043]將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取數(shù)據(jù)接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則刪除所述節(jié)點(diǎn),并判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為0,若是,則生成確認(rèn)字符;若不是,則在調(diào)用數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)從所述注冊表數(shù)據(jù)文件中刪除后,生成確認(rèn)字符;若沒有,則生成否定應(yīng)答字符。
[0044]本發(fā)明還提供一種金融自助設(shè)備,包括上述的Linux的注冊表服務(wù)系統(tǒng)。
[0045]本發(fā)明實(shí)施例提供的基于Linux的注冊表服務(wù)系統(tǒng)及方法,通過在內(nèi)存中構(gòu)建內(nèi)存注冊表,并在內(nèi)存中對(duì)內(nèi)存注冊表中進(jìn)行節(jié)點(diǎn)數(shù)據(jù)的操作,可為運(yùn)行的所有軟件提供一種統(tǒng)一、高效、安全的注冊表配置數(shù)據(jù)操作,滿足各個(gè)進(jìn)程間數(shù)據(jù)共享的需求。同時(shí)還可以實(shí)現(xiàn)與windows注冊表兼容的文件格式,提供高效的windows平臺(tái)代碼移植接口,可使windows代碼快速移植到Linux內(nèi)核平臺(tái)。此外,由于是在內(nèi)存中進(jìn)行操作的,還可提供高效的存儲(chǔ),并保證注冊表讀寫安全與多并發(fā)訪問的安全。
[0046]本發(fā)明所述基于Linux的注冊表服務(wù)系統(tǒng)及方法應(yīng)用于金融自助設(shè)備(如自助柜員機(jī)ATM、遠(yuǎn)程視頻柜員機(jī)VTM、清分機(jī)等),可實(shí)現(xiàn)系統(tǒng)自主可控,提高設(shè)備的安全性。
【附圖說明】
[0047]為了更清楚地說明本發(fā)明的技術(shù)方案,下面將對(duì)實(shí)施方式中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施方式,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0048]圖1是本發(fā)明實(shí)施例提供的基于Linux的注冊表服務(wù)系統(tǒng)的結(jié)構(gòu)示意圖。
[0049]圖2是本發(fā)明實(shí)施例提供的基于Linux的注冊表服務(wù)系統(tǒng)的工作原理圖。
[0050]圖3是本發(fā)明實(shí)施例提供的內(nèi)存注冊表的數(shù)據(jù)結(jié)構(gòu)圖。
[0051]圖4是圖3所示的內(nèi)存注冊表的節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)圖。
[0052]圖5是本發(fā)明實(shí)施例提供的注冊表操作單元的工作原理圖。
[0053]圖6是本發(fā)明實(shí)施例提供的注冊表服務(wù)單元的一種結(jié)構(gòu)示意圖。
[0054]圖7是本發(fā)明實(shí)施例提供的注冊表服務(wù)單元的一種結(jié)構(gòu)示意圖。
[0055]圖8是本發(fā)明實(shí)施例提供的注冊表服務(wù)單元的一種結(jié)構(gòu)示意圖。
[0056]圖9是本發(fā)明實(shí)施例提供的基于Linux的注冊表服務(wù)方法的流程示意圖。
[0057]圖10是本發(fā)明實(shí)施例提供的注冊表操作單元的執(zhí)行流程圖。
[0058]圖11為本發(fā)明實(shí)施例提供的內(nèi)存注冊表構(gòu)建單元與注冊表服務(wù)單元的執(zhí)行流程圖。
【具體實(shí)施方式】
[0059]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0060]請參閱圖1及圖2,本發(fā)明提供一種基于Linux的注冊表服務(wù)系統(tǒng)(以下稱為注冊表服務(wù)系統(tǒng))100,所述注冊表服務(wù)系統(tǒng)100包括內(nèi)存注冊表構(gòu)建單元10、注冊表操作單元20及注冊表服務(wù)單元30,其中:
[0061]所述內(nèi)存注冊表構(gòu)建單元10,用于加載操作系統(tǒng)下的注冊表數(shù)據(jù)文件,并通過數(shù)據(jù)庫接口讀取所述注冊表數(shù)據(jù)文件中已保存的配置表數(shù)據(jù),在內(nèi)存中構(gòu)建內(nèi)存注冊表。
[0062]在本發(fā)明實(shí)施例中,所述注冊表服務(wù)系統(tǒng)100啟動(dòng)后,所述內(nèi)存注冊表構(gòu)建單元10可加載操作系統(tǒng)下的注冊表數(shù)據(jù)文件(對(duì)于Linux系統(tǒng),可加載/etc/reg.dat),并通過數(shù)據(jù)庫接口(如sqlite3接口)讀取所述注冊表數(shù)據(jù)文件中已保存的配置表數(shù)據(jù),在內(nèi)存中構(gòu)建內(nèi)存注冊表。
[0063]在本發(fā)明實(shí)施例中,所述內(nèi)存注冊表為一種將臨時(shí)配置數(shù)據(jù)根據(jù)預(yù)先設(shè)計(jì)好的數(shù)據(jù)結(jié)構(gòu)寫入內(nèi)存中,而不寫入磁盤的配置表,且所述內(nèi)存注冊表會(huì)在系統(tǒng)重啟后進(jìn)行重置,即在系統(tǒng)重啟后,所述內(nèi)存注冊表就會(huì)被刪除。
[0064]請一并參閱圖3,所述內(nèi)存注冊表由若干個(gè)節(jié)點(diǎn)構(gòu)成,其中,每個(gè)節(jié)點(diǎn)包括至少一個(gè)主節(jié)點(diǎn)(tabRegNode)和一個(gè)子節(jié)點(diǎn)(tabRegltem),所述主節(jié)點(diǎn)與所述子節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)如圖4所示,其中,F(xiàn)K為數(shù)據(jù)庫外鍵,PK為數(shù)據(jù)庫主鍵。
[0065]所述注冊表操作單元20,用于從注冊表編輯器或者用戶進(jìn)程中收集節(jié)點(diǎn)數(shù)據(jù),并將所述節(jié)點(diǎn)數(shù)據(jù)傳輸給注冊表服務(wù)單元30。
[0066]在本發(fā)明實(shí)施例中,所述節(jié)點(diǎn)數(shù)據(jù)也具有如圖4所示的數(shù)據(jù)結(jié)構(gòu)。
[0067]請一并參閱圖5,在本發(fā)明實(shí)施例中,所述注冊表操作單元20可通過調(diào)用Reg API讀/寫數(shù)據(jù)接口,將所述節(jié)點(diǎn)數(shù)據(jù)傳入接口,此后,所述注冊表操作單元20將所述節(jié)點(diǎn)數(shù)據(jù)封裝成適于傳輸?shù)臄?shù)據(jù)流格式(如二進(jìn)制數(shù)據(jù)流)后,通過TCP/IP協(xié)議發(fā)送到所述注冊表服務(wù)單元30。
[0068]在本發(fā)明實(shí)施例中,在將所述封裝過的節(jié)點(diǎn)數(shù)據(jù)發(fā)送給所述注冊表服務(wù)單元30后,所述注冊表操作單元20等待所述注冊表服務(wù)單元30返回的操作確認(rèn)碼。其中,所述操作確認(rèn)碼可包括返回確認(rèn)字符(Ack)及否定應(yīng)答字符(Nak)。
[0069]所述注冊表服務(wù)單元30,用于針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表中與所述節(jié)點(diǎn)數(shù)據(jù)對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果向所述注冊表操作單元20返回操作確認(rèn)符;其中,所述操作方式為讀取、寫入、刪除中的一種。
[0070]在本發(fā)明實(shí)施例中,對(duì)所述對(duì)內(nèi)存注冊表的操作方式主要有讀取、寫入(包括修改和添加)、刪除。下面將逐一進(jìn)行說明。
[0071 ]請一并參閱圖6,當(dāng)所述操作方式為讀取時(shí):
[0072]則所述注冊表服務(wù)單元30具體包括:
[0073]第一id獲取模塊31,用于從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id。
[0074]在本發(fā)明實(shí)施例中,所述注冊表服務(wù)單元30在接收到所述節(jié)點(diǎn)數(shù)據(jù)后,解析所述節(jié)點(diǎn)數(shù)據(jù)后,從所述節(jié)點(diǎn)數(shù)據(jù)中獲取主節(jié)點(diǎn)id和子節(jié)點(diǎn)id。
[0075]讀取模塊32,用于將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則讀取所述節(jié)點(diǎn)數(shù)據(jù)中的節(jié)點(diǎn)數(shù)據(jù)值,并通過tcp/ip協(xié)議向所述注冊表操作單元20返回確認(rèn)字符(Ack)及封裝過的節(jié)點(diǎn)數(shù)據(jù);若沒有,則通過tcp/ip協(xié)議向所述注冊表操作單元20返回否定應(yīng)答字符(Nak)。
[0076]在本發(fā)明實(shí)施例中,所述注冊表操作單元20在接收到所述確認(rèn)字符和所述節(jié)點(diǎn)數(shù)據(jù)后,確認(rèn)讀取操作成功,并對(duì)所述節(jié)點(diǎn)數(shù)據(jù)進(jìn)行解析后,將所述節(jié)點(diǎn)數(shù)據(jù)傳遞至所述注冊表編輯器或所述用戶進(jìn)程;在接收到所述否定應(yīng)答字符后,確認(rèn)讀取操作失敗,并向所述注冊表編輯器或所述用戶進(jìn)程反饋?zhàn)x取失敗信息。
[0077]請參閱圖7,當(dāng)所述操作方式為寫入(包括修改及添加):
[0078]則所述注冊表服務(wù)單元30具體包括:
[0079]第二id獲取模塊33,用于從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id。
[0080]寫入模塊34,用于將所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則將查詢到的所述節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)值修改為所述節(jié)點(diǎn)數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)值;若沒有,則將所述節(jié)點(diǎn)數(shù)據(jù)添加到所述內(nèi)存注冊表中。
[0081]第一臨時(shí)數(shù)據(jù)判斷模塊35,用于判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為0,若是,則向所述注冊表操作單元20返回確認(rèn)字符;若不是,則調(diào)用所述數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)寫入到所述注冊表數(shù)據(jù)文件中,并向所述注冊表操作單元20返回確認(rèn)字符。
[0082]在本發(fā)明實(shí)施例中,若所述臨時(shí)數(shù)據(jù)標(biāo)記(tmp)為0,則說明所述節(jié)點(diǎn)數(shù)據(jù)為臨時(shí)數(shù)據(jù),只需在所述內(nèi)存注冊表上進(jìn)行寫入即可,即不需要存儲(chǔ)到磁盤上。若不為0,則說明所述節(jié)點(diǎn)數(shù)據(jù)為非臨時(shí)數(shù)據(jù),則除了在所述內(nèi)存注冊表上寫入,還需要寫入到操作系統(tǒng)下的注冊表數(shù)據(jù)文件中(即寫入到/etc/reg.dat中)。
[0083]在本發(fā)明實(shí)施例中,所述注冊表操作單元20在接收到所述確認(rèn)字符和所述節(jié)點(diǎn)數(shù)據(jù)后,確認(rèn)寫入操作成功;在接收到所述否定應(yīng)答字符后,確認(rèn)寫入操作失敗,并向所述注冊表編輯器或所述用戶進(jìn)程反饋寫入失敗信息。
[0084]請參閱圖8,當(dāng)所述操作方式為刪除時(shí):
[0085]則所述注冊表服務(wù)單元30具體包括:
[0086]第三id獲取模塊36,用于從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id。
[0087]刪除模塊37,用于將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則刪除所述節(jié)點(diǎn),并通知第二臨時(shí)數(shù)據(jù)判斷模塊38;若沒有,則向所述注冊表操作單元20返回否定應(yīng)答字符;
[0088]所述第二臨時(shí)數(shù)據(jù)判斷模塊38,用于判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為0,若是,則向所述注冊表操作單元返回確認(rèn)字符;若不是,則調(diào)用所述數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)從所述注冊表數(shù)據(jù)文件中刪除,并向所述注冊表操作單元返回確認(rèn)字符。
[0089]在本發(fā)明實(shí)施例中,所述注冊表操作單元20在接收到所述確認(rèn)字符和所述節(jié)點(diǎn)數(shù)據(jù)后,確認(rèn)刪除操作成功;在接收到所述否定應(yīng)答字符后,確認(rèn)刪除操作失敗,并向所述注冊表編輯器或所述用戶進(jìn)程反饋刪除失敗信息。
[°09°]需要說明的是,上述實(shí)施例中,若所述注冊表操作單元20在預(yù)定時(shí)間內(nèi)未接收到所述注冊表服務(wù)單元30返回的操作確認(rèn)碼時(shí),則所述注冊表操作單元20報(bào)告通信超時(shí),通知所述注冊表編輯器或者用戶操作失敗,并結(jié)束本次操作。
[0091]綜上所述,本發(fā)明實(shí)施例提供的注冊表服務(wù)系統(tǒng)100,通過所述內(nèi)存注冊表構(gòu)建單元10在內(nèi)存中構(gòu)建內(nèi)存注冊表,所述注冊表服務(wù)單元30在內(nèi)存注冊表中進(jìn)行數(shù)據(jù)的操作,可為運(yùn)行的所有軟件提供一種統(tǒng)一、高效、安全的注冊表配置數(shù)據(jù)的操作,滿足各個(gè)進(jìn)程間數(shù)據(jù)共享的需求。同時(shí)還可以實(shí)現(xiàn)與windows注冊表兼容的文件格式,提供高效的windows平臺(tái)代碼移植接口,可使windows代碼快速移植到Linux內(nèi)核平臺(tái)。此外,由于內(nèi)存注冊表的操作是在內(nèi)存中進(jìn)行地,可提供高效的存儲(chǔ),并保證注冊表讀寫安全與多并發(fā)訪問的安全。
[0092]請一并參閱圖9,本發(fā)明還提供一種基于Linux的注冊表服務(wù)方法,所述注冊表服務(wù)方法可由上述的注冊表服務(wù)系統(tǒng)100來執(zhí)行,并包括如下步驟:
[0093]SlOl,加載操作系統(tǒng)下的注冊表數(shù)據(jù)文件,并通過數(shù)據(jù)庫接口讀取所述注冊表數(shù)據(jù)文件中已保存的配置表數(shù)據(jù),在內(nèi)存中構(gòu)建內(nèi)存注冊表。
[0094]在本發(fā)明實(shí)施例中,所述注冊表服務(wù)系統(tǒng)啟動(dòng)后,可加載操作系統(tǒng)下的注冊表數(shù)據(jù)文件(對(duì)于Linux系統(tǒng),可加載/etc/reg.dat),并通過數(shù)據(jù)庫接口(如sqlite3接口)讀取所述注冊表數(shù)據(jù)文件中已保存的配置表數(shù)據(jù),在內(nèi)存中構(gòu)建內(nèi)存注冊表。
[0095]其中,所述內(nèi)存注冊表為一種將臨時(shí)配置數(shù)據(jù)根據(jù)預(yù)先設(shè)計(jì)好的數(shù)據(jù)結(jié)構(gòu)寫入內(nèi)存中,而不寫入磁盤的配置表。所述內(nèi)存注冊表的具體數(shù)據(jù)結(jié)構(gòu)可參考圖3及圖4.
[0096]S102,從注冊表編輯器或者用戶進(jìn)程中收集節(jié)點(diǎn)數(shù)據(jù)。
[0097]在本發(fā)明實(shí)施例中,注冊表操作單元20可通過調(diào)用RegAPI讀/寫數(shù)據(jù)接口,將所述節(jié)點(diǎn)數(shù)據(jù)傳入接口,此后,所述注冊表操作單元20將所述節(jié)點(diǎn)數(shù)據(jù)封裝成適于傳輸?shù)臄?shù)據(jù)流格式(如二進(jìn)制數(shù)據(jù)流)后,通過TCP/IP協(xié)議發(fā)送到所述注冊表服務(wù)單元30。
[0098]S103,根據(jù)針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表中與所述節(jié)點(diǎn)數(shù)據(jù)對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果生成操作確認(rèn)符;其中,所述操作方式為讀取、寫入、刪除中的一種。
[0099]在本發(fā)明實(shí)施例中,對(duì)所述對(duì)內(nèi)存注冊表的操作方式主要有讀取、寫入(包括修改和添加)、刪除。下面將逐一進(jìn)行說明。
[0100]所述操作方式為讀??;
[0101]則步驟S103具體包括:
[0102]S1031,從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id。
[0103]S1032,將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,貝Ij讀取所述節(jié)點(diǎn)數(shù)據(jù)中的節(jié)點(diǎn)數(shù)據(jù)值,并生成確認(rèn)字符;若沒有,則生成否定應(yīng)答字符。
[0104]在本發(fā)明實(shí)施例中,所述注冊表操作單元20在接收到所述確認(rèn)字符和所述節(jié)點(diǎn)數(shù)據(jù)后,確認(rèn)讀取操作成功,并對(duì)所述節(jié)點(diǎn)數(shù)據(jù)進(jìn)行解析后,將所述節(jié)點(diǎn)數(shù)據(jù)傳遞至所述注冊表編輯器或所述用戶進(jìn)程;在接收到所述否定應(yīng)答字符后,確認(rèn)讀取操作失敗,并向所述注冊表編輯器或所述用戶進(jìn)程反饋?zhàn)x取失敗信息。
[0105]當(dāng)所述操作方式為寫入,則步驟S103具體包括:
[0106]S1033,從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id。
[0107]S1034,將所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則將查詢到的所述節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)值修改為所述節(jié)點(diǎn)數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)值;若沒有,則將所述節(jié)點(diǎn)數(shù)據(jù)添加到所述內(nèi)存注冊表中。
[0108]S1035,判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為O,若是,則生成確認(rèn)字符;若不是,則在調(diào)用數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)寫入到所述注冊表數(shù)據(jù)文件中后,生成確認(rèn)字符。
[0109]在本發(fā)明實(shí)施例中,若所述臨時(shí)數(shù)據(jù)標(biāo)記(tmp)為0,則說明所述節(jié)點(diǎn)數(shù)據(jù)為臨時(shí)數(shù)據(jù),只需在所述內(nèi)存注冊表上進(jìn)行寫入即可,即不需要存儲(chǔ)到磁盤上。若不為0,則說明所述節(jié)點(diǎn)數(shù)據(jù)為非臨時(shí)數(shù)據(jù),則除了在所述內(nèi)存注冊表上寫入,還需要寫入到操作系統(tǒng)下的注冊表數(shù)據(jù)文件中(即寫入到/etc/reg.dat中)。
[0110]在本發(fā)明實(shí)施例中,所述注冊表操作單元20在接收到所述確認(rèn)字符和所述節(jié)點(diǎn)數(shù)據(jù)后,確認(rèn)寫入操作成功;在接收到所述否定應(yīng)答字符后,確認(rèn)寫入操作失敗,并向所述注冊表編輯器或所述用戶進(jìn)程反饋寫入失敗信息。
[0111]當(dāng)所述操作方式為刪除,則步驟S103具體包括:
[0112]S1036,從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id。
[0113]S1037,將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取數(shù)據(jù)接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則刪除所述節(jié)點(diǎn),并判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為0,若是,則生成確認(rèn)字符;若不是,則在調(diào)用數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)從所述注冊表數(shù)據(jù)文件中刪除后,生成確認(rèn)字符;若沒有,則生成否定應(yīng)答字符。
[0114]在本發(fā)明實(shí)施例中,所述注冊表操作單元20在接收到所述確認(rèn)字符和所述節(jié)點(diǎn)數(shù)據(jù)后,確認(rèn)刪除操作成功;在接收到所述否定應(yīng)答字符后,確認(rèn)刪除操作失敗,并向所述注冊表編輯器或所述用戶進(jìn)程反饋刪除失敗信息。
[0? ?5]需要說明的是,上述實(shí)施例中,若所述注冊表操作單元20在預(yù)定時(shí)間內(nèi)未接收到所述注冊表服務(wù)單元30返回的操作確認(rèn)碼時(shí),則所述注冊表操作單元20報(bào)告通信超時(shí),通知所述注冊表編輯器或者用戶操作失敗,并結(jié)束本次操作。
[0116]綜上所述,本發(fā)明實(shí)施例提供的基于Linux的注冊表服務(wù)方法,通過在內(nèi)存中構(gòu)建內(nèi)存注冊表,并在內(nèi)存中對(duì)內(nèi)存注冊表中進(jìn)行節(jié)點(diǎn)數(shù)據(jù)的操作,可為運(yùn)行的所有軟件提供一種統(tǒng)一、高效、安全的注冊表配置數(shù)據(jù)操作,滿足各個(gè)進(jìn)程間數(shù)據(jù)共享的需求。同時(shí)還可以實(shí)現(xiàn)與windows注冊表兼容的文件格式,提供高效的windows平臺(tái)代碼移植接口,可使windows代碼快速移植到Linux內(nèi)核平臺(tái)。此外,此外,由于對(duì)所述內(nèi)存注冊表的操作是在內(nèi)存中進(jìn)行地,可提供高效的存儲(chǔ),并保證注冊表讀寫安全與多并發(fā)訪問的安全。
[0117]請一并參閱圖10和圖11,圖10為所述注冊表操作單元的執(zhí)行流程圖。圖11為所述內(nèi)存注冊表構(gòu)建單元與所述注冊表服務(wù)單元的執(zhí)行流程圖。
[0118](一)讀取數(shù)據(jù):
[0119]S13:注冊表系統(tǒng)服務(wù)開始運(yùn)行。
[0120]S14:內(nèi)存注冊表構(gòu)建單元加載/etc/reg.dat文件,通過sqlite3讀取已保存配置表數(shù)據(jù),構(gòu)建內(nèi)存注冊表。
[0121 ] SI:注冊表操作單元開始被調(diào)用。
[0122]S2:注冊表編輯器或者用戶進(jìn)程構(gòu)建出節(jié)點(diǎn)數(shù)據(jù),并傳入節(jié)點(diǎn)數(shù)據(jù)。
[0123]S3:調(diào)用Reg API讀數(shù)據(jù)接口,將節(jié)點(diǎn)數(shù)據(jù)傳入接口。
[0124]S4:將節(jié)點(diǎn)數(shù)據(jù)封裝成二進(jìn)制數(shù)據(jù)流。
[0125]S5:將二進(jìn)制數(shù)據(jù)流通過TCP/IP協(xié)議發(fā)送到注冊表服務(wù)單元。注冊表操作服務(wù)單元將從S15開始運(yùn)作。
[0126]S6:注冊表操作單元等待注冊表服務(wù)單元返回操作確認(rèn)碼,如果返回Ack,跳轉(zhuǎn)執(zhí)行S8;如果返回Nak,跳轉(zhuǎn)執(zhí)行S7;如果未有確認(rèn)碼返回,跳轉(zhuǎn)執(zhí)行S11。
[0127]S8:接收Ack數(shù)據(jù),確認(rèn)操作成功。
[0128]S9:判斷是否為讀取操作,若是,則執(zhí)行SlO。
[0129]S10:獲取到反饋的二進(jìn)制數(shù)據(jù)流,還原為節(jié)點(diǎn)數(shù)據(jù),傳送給注冊表編輯器或者用戶進(jìn)程。跳轉(zhuǎn)到S12。
[0130]S7:接收到Nak數(shù)據(jù),讀取操作失敗,通知注冊表編輯器或者用戶進(jìn)程獲取失敗。跳轉(zhuǎn)到S12。
[0131]Sll:未有數(shù)據(jù)返回,報(bào)告通信超時(shí),通知注冊表編輯器或者用戶進(jìn)程讀取失敗。跳轉(zhuǎn)到S12。
[0132]S12:讀取過程結(jié)束。
[0133]S15:內(nèi)存注冊表建立TCP/IP連接,等待接收二進(jìn)制數(shù)據(jù)流。
[0134]S16:判斷是否接收到數(shù)據(jù),收到數(shù)據(jù)跳轉(zhuǎn)S18,未收到數(shù)據(jù)跳轉(zhuǎn)S17。
[0135]S17:判斷是否結(jié)束服務(wù)。結(jié)束服務(wù)跳轉(zhuǎn)到S19,繼續(xù)運(yùn)行跳轉(zhuǎn)到S15。
[0136]S19:退出注冊表服務(wù)單元。
[0137]S18:解析二進(jìn)制流數(shù)據(jù),構(gòu)建節(jié)點(diǎn)數(shù)據(jù)。
[0138]S20:從節(jié)點(diǎn)數(shù)據(jù)中獲取tabRegNode id(主節(jié)點(diǎn)id)與tabRegltem id(子節(jié)點(diǎn)id)。
[0139]S21:判斷該數(shù)據(jù)操作方式,本過程為讀取數(shù)據(jù),直接跳轉(zhuǎn)S27。
[0140]S27:將節(jié)點(diǎn)數(shù)據(jù)傳入讀取數(shù)據(jù)接口。
[0141 ] S28:判斷內(nèi)存注冊表內(nèi)是否存在與傳入節(jié)點(diǎn)相同tabRegNode id與tabRegltemid的節(jié)點(diǎn)。存在跳轉(zhuǎn)S29,不存在跳轉(zhuǎn)S31。
[0142]S29:讀取節(jié)點(diǎn)數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)值。
[0143]S30:通過TCP/IP通信發(fā)送Ack和節(jié)點(diǎn)數(shù)據(jù)與注冊表操作單元,跳轉(zhuǎn)到S15。
[0144]S31: TCP/IP發(fā)送Nak與注冊表操作單元,跳轉(zhuǎn)到SI 5。
[0145](二)寫入(添加/修改)數(shù)據(jù):
[0146]SI 3:注冊表服務(wù)系統(tǒng)開始運(yùn)行。
[OH7] S14:內(nèi)存注冊表構(gòu)建單元加載/etc/reg.dat文件,通過sqlite3讀取已保存配置表數(shù)據(jù),構(gòu)建內(nèi)存注冊表。
[0148]SI:注冊表操作單元開始被調(diào)用。
[0149]S2:注冊表編輯器或者用戶進(jìn)程構(gòu)建出節(jié)點(diǎn)數(shù)據(jù),并傳入節(jié)點(diǎn)數(shù)據(jù)。
[0150]S3:調(diào)用Reg API讀數(shù)據(jù)接口,將節(jié)點(diǎn)數(shù)據(jù)傳入接口。
[0151]S4:將節(jié)點(diǎn)數(shù)據(jù)封裝成二進(jìn)制數(shù)據(jù)流。
[0152]S5:將二進(jìn)制數(shù)據(jù)流通過TCP/IP協(xié)議發(fā)送到注冊表服務(wù)單元。注冊表服務(wù)單元將從S15開始運(yùn)作。
[0153]S6:注冊表操作單元等待注冊表服務(wù)單元返回操作確認(rèn)碼,如果返回Ack,跳轉(zhuǎn)執(zhí)行S8;如果返回Nak,跳轉(zhuǎn)執(zhí)行S7;如果未有確認(rèn)碼返回,跳轉(zhuǎn)執(zhí)行S11。
[0154]S8:接收Ack數(shù)據(jù),確認(rèn)操作成功。
[0155]S9:判斷是否為讀取操作,該應(yīng)該過程不是讀取操作,跳轉(zhuǎn)到S12
[0156]S7:接收到Nak數(shù)據(jù),添加/修改數(shù)據(jù)操作失敗,通知注冊表編輯器或者用戶進(jìn)程操作失敗。跳轉(zhuǎn)到S12。
[0157]Sll:未有數(shù)據(jù)返回,報(bào)告通信超時(shí),通知注冊表編輯器或者用戶進(jìn)程執(zhí)行失敗。跳轉(zhuǎn)到S12。
[0158]SI 2:讀取過程結(jié)束。
[0159]S15:內(nèi)存注冊表建立TCP/IP連接,等待接收二進(jìn)制數(shù)據(jù)流。
[0160]S16:判斷是否接收到數(shù)據(jù),收到數(shù)據(jù)跳轉(zhuǎn)S18,未收到數(shù)據(jù)跳轉(zhuǎn)到S17。
[0161]S17:判斷是否結(jié)束服務(wù)。結(jié)束服務(wù)跳轉(zhuǎn)到S19,繼續(xù)運(yùn)行跳轉(zhuǎn)到S15。
[0162]S19:退出注冊表服務(wù)單元。
[0163]S18:解析二進(jìn)制數(shù)據(jù)流,構(gòu)建節(jié)點(diǎn)數(shù)據(jù)。
[0164]S20:從節(jié)點(diǎn)數(shù)據(jù)中獲取tabRegNode id與tabRegltem id值。
[0165]S21:判斷該數(shù)據(jù)操作方式,本過程為添加/修改數(shù)據(jù)操作,直接跳轉(zhuǎn)S22。
[0166]S22:判斷內(nèi)存注冊表內(nèi)是否存在與傳入節(jié)點(diǎn)數(shù)據(jù)相同tabRegNode id與tabRegltem id值的節(jié)點(diǎn)。存在跳轉(zhuǎn)S23,不存在跳轉(zhuǎn)S38。
[0167]S23:直接修改與tabRegNode id與tabRegltem id值相同的節(jié)點(diǎn)數(shù)據(jù)值。跳轉(zhuǎn)到S24。
[0168]S38:將節(jié)點(diǎn)數(shù)據(jù)添加入內(nèi)存注冊表中。跳轉(zhuǎn)到S24。
[0169]S24:讀取臨時(shí)數(shù)據(jù)標(biāo)記tmp,如果為O,跳轉(zhuǎn)S26,否則跳轉(zhuǎn)S25。
[0170]S25:調(diào)用Sqlite3接口將節(jié)點(diǎn)數(shù)據(jù)寫入/etc/reg.dat文件中。跳轉(zhuǎn)S26。
[0171 ]S26: TCP/IP發(fā)送Ack與注冊表操作單元,確認(rèn)寫入數(shù)據(jù)成功,跳轉(zhuǎn)到S15。
[0172](三)刪除數(shù)據(jù):
[0173]S13:注冊表服務(wù)系統(tǒng)開始運(yùn)行。
[ΟΙ74]S14:內(nèi)存注冊表構(gòu)建單元加載/etc/reg.dat文件,通過sqlite3讀取已保存配置表數(shù)據(jù),構(gòu)建內(nèi)存注冊表。
[0175]SI:注冊表操作單元開始被調(diào)用。
[0176]S2:注冊表編輯器或者用戶進(jìn)程構(gòu)建出節(jié)點(diǎn)數(shù)據(jù),并傳入節(jié)點(diǎn)數(shù)據(jù)。
[0177]S3:調(diào)用Reg API讀數(shù)據(jù)接口,將節(jié)點(diǎn)數(shù)據(jù)傳入接口。
[0178]S4:將節(jié)點(diǎn)數(shù)據(jù)封裝成二進(jìn)制數(shù)據(jù)流。
[0179]S5:將二進(jìn)制數(shù)據(jù)流通過TCP/IP協(xié)議發(fā)送到注冊表服務(wù)單元。注冊表服務(wù)單元將從S15開始運(yùn)作。
[0180]S6:注冊表操作單元等待注冊表服務(wù)單元返回操作確認(rèn)碼,如果返回Ack,跳轉(zhuǎn)執(zhí)行S8;如果返回Nak,跳轉(zhuǎn)執(zhí)行S7;如果未有確認(rèn)碼返回,跳轉(zhuǎn)執(zhí)行S11。
[0181 ]S8:接收Ack數(shù)據(jù),確認(rèn)操作成功。
[0182]S9:判斷是否為讀取操作,該應(yīng)該過程不是讀取操作,跳轉(zhuǎn)到S12
[0183]S7:接收到Nak數(shù)據(jù),添加/修改數(shù)據(jù)操作失敗,通知注冊表編輯器或者用戶進(jìn)程操作失敗。跳轉(zhuǎn)到S12。
[0184]Sll:未有數(shù)據(jù)返回,報(bào)告通信超時(shí),通知注冊表編輯器或者用戶進(jìn)程執(zhí)行失敗。跳轉(zhuǎn)到S12。
[0185]SI 2:讀取過程結(jié)束。
[0186]S15:內(nèi)存注冊表建立TCP/IP連接,等待接收二進(jìn)制流數(shù)據(jù)。
[0187]S16:判斷是否接收到數(shù)據(jù),收到數(shù)據(jù)跳轉(zhuǎn)S18,未收到數(shù)據(jù)跳轉(zhuǎn)到S17。
[0188]S17:判斷是否結(jié)束服務(wù)。結(jié)束服務(wù)跳轉(zhuǎn)到S19,繼續(xù)運(yùn)行跳轉(zhuǎn)到S15。
[0189]S19:退出注冊表操作服務(wù)單元。
[0190]S18:解析二進(jìn)制數(shù)據(jù)流,構(gòu)建節(jié)點(diǎn)數(shù)據(jù)。
[0191 ]S20:從節(jié)點(diǎn)數(shù)據(jù)中獲取tabRegNode id與tabRegltem id。
[0192]S21:判斷該數(shù)據(jù)操作方式,本過程刪除數(shù)據(jù)操作,直接跳轉(zhuǎn)S32。
[0193]S32:判斷內(nèi)存注冊表內(nèi)是否存在與傳入節(jié)點(diǎn)數(shù)據(jù)相同tabRegNode id與tabRegltem id值的節(jié)點(diǎn)。存在跳轉(zhuǎn)S33,不存在跳轉(zhuǎn)S34。
[0194]S33:刪除所述內(nèi)存注冊表中與tabRegNode id與tabRegltem id相同的節(jié)點(diǎn)。跳轉(zhuǎn)到 S35。
[0195]S34:TCP/IP發(fā)送Nak注冊表操作單元,通知?jiǎng)h除失敗,跳轉(zhuǎn)到S15。
[0196]S35:讀取tmp臨時(shí)數(shù)據(jù)標(biāo)記,如果為O,跳轉(zhuǎn)S36,否則跳轉(zhuǎn)S37。
[0197]S37:調(diào)用Sqlite3接口將節(jié)點(diǎn)數(shù)據(jù)從/^化/代8.(1&七文件中刪除。跳轉(zhuǎn)337。
[0198]S37:TCP/IP發(fā)送Ack與注冊表操作單元,確認(rèn)刪除數(shù)據(jù)成功,跳轉(zhuǎn)到S15。
[0199]綜上所述,本發(fā)明實(shí)施例提供的注冊表服務(wù)方法,通過構(gòu)建內(nèi)存注冊表,并在內(nèi)存注冊表中進(jìn)行節(jié)點(diǎn)數(shù)據(jù)的操作,可為運(yùn)行的所有軟件提供一種統(tǒng)一、高效、安全的注冊表配置數(shù)據(jù)操作,滿足各個(gè)進(jìn)程間數(shù)據(jù)共享的需求。同時(shí)還可以實(shí)現(xiàn)與windows注冊表兼容的文件格式,提供高效的windows平臺(tái)代碼移植接口,可使windows代碼快速移植到Linux內(nèi)核平臺(tái)。此外,由于采用內(nèi)存注冊表的操作方式,可提供高效的存儲(chǔ),并保證注冊表讀寫安全與多并發(fā)訪問的安全。
[0200]本發(fā)明還提供一種金融自助設(shè)備,所述金融自助設(shè)備可為自助柜員機(jī)ATM、遠(yuǎn)程視頻柜員機(jī)VTM、清分機(jī)等,其包括上述的基于Linux的注冊表服務(wù)系統(tǒng)100(或者包括與所述注冊表服務(wù)方法對(duì)應(yīng)的程序代碼)。所述金融自助設(shè)備可實(shí)現(xiàn)系統(tǒng)自主可控,并提高了設(shè)備的安全性。
[0201 ]以上所揭露的僅為本發(fā)明一種較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
[0202]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random AccessMemory,RAM)等。
【主權(quán)項(xiàng)】
1.一種基于Linux的注冊表服務(wù)系統(tǒng),其特征在于,包括: 內(nèi)存注冊表構(gòu)建單元,用于加載操作系統(tǒng)下的注冊表數(shù)據(jù)文件,并通過數(shù)據(jù)庫接口讀取所述注冊表數(shù)據(jù)文件中已保存的配置表數(shù)據(jù),在內(nèi)存中構(gòu)建內(nèi)存注冊表; 注冊表操作單元,用于從注冊表編輯器或者用戶進(jìn)程中收集節(jié)點(diǎn)數(shù)據(jù),并將所述節(jié)點(diǎn)數(shù)據(jù)傳輸給注冊表服務(wù)單元; 所述注冊表服務(wù)單元,用于根據(jù)針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表中與所述節(jié)點(diǎn)數(shù)據(jù)對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果向所述注冊表操作單元返回操作確認(rèn)符;其中,所述操作方式為讀取、寫入、刪除中的一種。2.根據(jù)權(quán)利要求1所述的基于Linux的注冊表服務(wù)系統(tǒng),其特征在于, 所述內(nèi)存注冊表為一種將臨時(shí)配置數(shù)據(jù)根據(jù)預(yù)先設(shè)計(jì)好的數(shù)據(jù)結(jié)構(gòu)寫入內(nèi)存中,而不寫入磁盤的配置表,其中,所述內(nèi)存注冊表由至少一個(gè)節(jié)點(diǎn)構(gòu)成,每個(gè)節(jié)點(diǎn)包括主節(jié)點(diǎn)及子節(jié)點(diǎn),所述主節(jié)點(diǎn)包括主節(jié)點(diǎn)id,所述子節(jié)點(diǎn)包括子節(jié)點(diǎn)id及節(jié)點(diǎn)數(shù)據(jù)值。3.根據(jù)權(quán)利要求1或2所述的基于Linux的注冊表服務(wù)系統(tǒng),其特征在于,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)及子節(jié)點(diǎn),所述主節(jié)點(diǎn)包括主節(jié)點(diǎn)id,所述子節(jié)點(diǎn)包括子節(jié)點(diǎn)id及節(jié)點(diǎn)數(shù)據(jù)值;所述操作方式為讀??; 則所述注冊表服務(wù)單元具體包括: 第一 id獲取模塊,用于從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id; 讀取模塊,用于將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則讀取所述節(jié)點(diǎn)數(shù)據(jù)中的節(jié)點(diǎn)數(shù)據(jù)值,并向所述注冊表操作單元返回所述節(jié)點(diǎn)數(shù)據(jù)及確認(rèn)字符;若沒有,則向所述注冊表操作單元返回否定應(yīng)答字符; 所述注冊表操作單元,還用于在接收到所述確認(rèn)字符和所述節(jié)點(diǎn)數(shù)據(jù)后,確認(rèn)讀取操作成功,并將所述節(jié)點(diǎn)數(shù)據(jù)傳遞至所述注冊表編輯器或所述用戶進(jìn)程;在接收到所述否定應(yīng)答字符后,確認(rèn)讀取操作失敗,并向所述注冊表編輯器或所述用戶進(jìn)程反饋?zhàn)x取失敗信息。4.根據(jù)權(quán)利要求1或2所述的基于Linux的注冊表服務(wù)系統(tǒng),其特征在于,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)id、子節(jié)點(diǎn)id、節(jié)點(diǎn)數(shù)據(jù)值及臨時(shí)數(shù)據(jù)標(biāo)記;所述操作方式為寫入; 則所述注冊表服務(wù)單元具體包括: 第二 id獲取模塊,用于從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id; 寫入模塊,用于將所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則將查詢到的所述節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)值修改為所述節(jié)點(diǎn)數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)值;若沒有,則將所述節(jié)點(diǎn)數(shù)據(jù)添加到所述內(nèi)存注冊表中; 第一臨時(shí)數(shù)據(jù)判斷模塊,用于判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為O,若是,則向所述注冊表操作單元返回確認(rèn)字符;若不是,則調(diào)用所述數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)寫入到所述注冊表數(shù)據(jù)文件中,并向所述注冊表操作單元返回確認(rèn)字符。5.根據(jù)權(quán)利要求1或2所述的基于Linux的注冊表服務(wù)系統(tǒng),其特征在于,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)id、子節(jié)點(diǎn)id、節(jié)點(diǎn)數(shù)據(jù)值及臨時(shí)數(shù)據(jù)標(biāo)記;所述操作方式為刪除; 則所述注冊表服務(wù)單元具體包括: 第三id獲取模塊,用于從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id; 刪除模塊,用于將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則刪除所述節(jié)點(diǎn),并通知第二臨時(shí)數(shù)據(jù)判斷模塊;若沒有,則向所述注冊表操作單元返回否定應(yīng)答字符; 所述第二臨時(shí)數(shù)據(jù)判斷模塊,用于判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為O,若是,則向所述注冊表操作單元返回確認(rèn)字符;若不是,則調(diào)用所述數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)從所述注冊表數(shù)據(jù)文件中刪除,并向所述注冊表操作單元返回確認(rèn)字符。6.一種基于Linux的注冊表服務(wù)方法,其特征在于,包括: 加載操作系統(tǒng)下的注冊表數(shù)據(jù)文件,并通過數(shù)據(jù)庫接口讀取所述注冊表數(shù)據(jù)文件中已保存的配置表數(shù)據(jù),在內(nèi)存中構(gòu)建內(nèi)存注冊表; 從注冊表編輯器或者用戶進(jìn)程中收集節(jié)點(diǎn)數(shù)據(jù); 根據(jù)針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表中與所述節(jié)點(diǎn)數(shù)對(duì)應(yīng)的節(jié)點(diǎn)進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果生成操作確認(rèn)符;其中,所述操作方式為讀取、寫入、刪除中的一種。7.根據(jù)權(quán)利要求6所述的基于Linux的注冊表服務(wù)方法,其特征在于, 所述內(nèi)存注冊表為一種將臨時(shí)配置數(shù)據(jù)根據(jù)預(yù)先設(shè)計(jì)好的數(shù)據(jù)結(jié)構(gòu)寫入內(nèi)存中,而不寫入磁盤的配置表,其中,所述內(nèi)存注冊表由至少一個(gè)節(jié)點(diǎn)構(gòu)成,每個(gè)節(jié)點(diǎn)至少包括主節(jié)點(diǎn)i d、子節(jié)點(diǎn)i d及節(jié)點(diǎn)數(shù)據(jù)值。8.根據(jù)權(quán)利要求6或7所述的基于Linux的注冊表服務(wù)方法,其特征在于,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)id、子節(jié)點(diǎn)id及節(jié)點(diǎn)數(shù)據(jù)值;所述操作方式為讀??; 則所述根據(jù)所述節(jié)點(diǎn)數(shù)據(jù)及針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果生成操作確認(rèn)符,具體包括: 從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id ; 將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則讀取所述節(jié)點(diǎn)數(shù)據(jù)中的節(jié)點(diǎn)數(shù)據(jù)值,并生成確認(rèn)字符;若沒有,則生成否定應(yīng)答字符。9.根據(jù)權(quán)利要求6或7所述的基于Linux的注冊表服務(wù)方法,其特征在于,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)id、子節(jié)點(diǎn)id、節(jié)點(diǎn)數(shù)據(jù)值及臨時(shí)數(shù)據(jù)標(biāo)記;所述操作方式為寫入; 則所述根據(jù)所述節(jié)點(diǎn)數(shù)據(jù)及針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果生成操作確認(rèn)符,具體包括: 從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id ; 將所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則將查詢到的所述節(jié)點(diǎn)的節(jié)點(diǎn)數(shù)據(jù)值修改為所述節(jié)點(diǎn)數(shù)據(jù)的節(jié)點(diǎn)數(shù)據(jù)值;若沒有,則將所述節(jié)點(diǎn)數(shù)據(jù)添加到所述內(nèi)存注冊表中; 判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為O,若是,則生成確認(rèn)字符;若不是,則在調(diào)用數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)寫入到所述注冊表數(shù)據(jù)文件中后,生成確認(rèn)字符。10.根據(jù)權(quán)利要求6或7所述的基于Linux的注冊表服務(wù)方法,其特征在于,所述操作確認(rèn)碼為確認(rèn)字符或否定應(yīng)答字符,所述節(jié)點(diǎn)數(shù)據(jù)包括主節(jié)點(diǎn)id、子節(jié)點(diǎn)id、節(jié)點(diǎn)數(shù)據(jù)值及臨時(shí)數(shù)據(jù)標(biāo)記;所述操作方式為刪除; 則所述根據(jù)所述節(jié)點(diǎn)數(shù)據(jù)及針對(duì)所述內(nèi)存注冊表的操作方式,對(duì)所述內(nèi)存注冊表進(jìn)行相應(yīng)的操作,并在操作完成后,根據(jù)操作結(jié)果生成操作確認(rèn)符,具體包括: 從所述節(jié)點(diǎn)數(shù)據(jù)中獲取所述主節(jié)點(diǎn)id及所述子節(jié)點(diǎn)id ; 將所述主節(jié)點(diǎn)id及子節(jié)點(diǎn)id傳入所述內(nèi)存注冊表的讀取數(shù)據(jù)接口中,并查詢所述內(nèi)存注冊表中是否存在與所述節(jié)點(diǎn)數(shù)據(jù)具有相同主節(jié)點(diǎn)id及子節(jié)點(diǎn)id的節(jié)點(diǎn);若有,則刪除所述節(jié)點(diǎn),并判斷所述節(jié)點(diǎn)數(shù)據(jù)的臨時(shí)數(shù)據(jù)標(biāo)記是否為0,若是,則生成確認(rèn)字符;若不是,則在調(diào)用數(shù)據(jù)庫接口將所述節(jié)點(diǎn)數(shù)據(jù)從所述注冊表數(shù)據(jù)文件中刪除后,生成確認(rèn)字符;若沒有,則生成否定應(yīng)答字符。11.一種金融自助設(shè)備,其特征在于,包括如權(quán)利要求1-5任意一項(xiàng)所述的基于Linux的注冊表服務(wù)系統(tǒng)。
【文檔編號(hào)】G06F21/62GK105912952SQ201610293612
【公開日】2016年8月31日
【申請日】2016年5月4日
【發(fā)明人】林宇龍, 熊飛, 黃三朋, 潘煜豪, 梁建明
【申請人】廣州廣電運(yùn)通金融電子股份有限公司