CN105912952B - 一种基于Linux的注册表服务系统、方法及金融自助设备 - Google Patents
一种基于Linux的注册表服务系统、方法及金融自助设备 Download PDFInfo
- Publication number
- CN105912952B CN105912952B CN201610293612.3A CN201610293612A CN105912952B CN 105912952 B CN105912952 B CN 105912952B CN 201610293612 A CN201610293612 A CN 201610293612A CN 105912952 B CN105912952 B CN 105912952B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- registration table
- memory
- registry
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Databases & Information Systems (AREA)
Abstract
本发明公开了一种基于Linux的注册表服务系统,包括:内存注册表构建单元,用于加载操作系统下的注册表数据文件,并通过数据库接口读取所述注册表数据文件中已保存的配置表数据,在内存中构建内存注册表;注册表操作单元,用于从注册表编辑器或者用户进程中收集节点数据,并将节点数据传输给注册表服务单元;注册表服务单元,用于根据针对内存注册表的操作方式,对内存注册表中与节点数据对应的节点进行相应的操作。本发明还公开了一种基于Linux的注册表服务方法及金融自助设备,通过在内存中对内存注册表中进行节点数据的操作,可为运行的所有软件提供一种统一、高效、安全的注册表配置数据操作,满足各个进程间数据共享的需求。
Description
技术领域
本发明涉及自助终端领域,尤其涉及一种基于Linux的注册表服务系统、方法及金融自助设备。
背景技术
注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用。这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳(shell)的初始条件、首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述、状态和属性,性能记录和其他底层的系统状态信息,以及其他数据等。
在Linux系统下没有类似Windows系统下的注册表服务,Linux系统下没有临时配置数据的操作接口,也就是存放在内存的临时配置数据的操作接口。
然而出于安全性的考虑,在金融行业应用中,一般使用Linux系统。为了解决数据配置问题,现在的自主可控Linux系统中,可以通过内存配置表确保灾难情况下内存数据的有效备份和还原。但是程序对配置的读取与保存大多在直接在文件中进行,没有统一的接口操作,不方便各个系统间代码兼容移植,而且这种读取数据的速度较慢,无法保证注册表的修改安全和多并发访问的安全。
发明内容
针对上述问题,本发明的目的在于提供一种基于Linux的注册表服务系统、方法及金融自助设备,可实现兼容性好,读写安全与多并发访问安全的注册表服务
本发明提供了一种基于Linux的注册表服务系统,包括:
内存注册表构建单元,用于加载操作系统下的注册表数据文件,并通过数据库接口读取所述注册表数据文件中已保存的配置表数据,在内存中构建内存注册表;
注册表操作单元,用于从注册表编辑器或者用户进程中收集节点数据,并将所述节点数据传输给注册表服务单元;
所述注册表服务单元,用于根据针对所述内存注册表的操作方式,对所述内存注册表中与所述节点数据对应的节点进行相应的操作,并在操作完成后,根据操作结果向所述注册表操作单元返回操作确认符;其中,所述操作方式为读取、写入、删除中的一种;
所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点及子节点,所述主节点包括主节点id,所述子节点包括子节点id及节点数据值;所述操作方式为读取;
则所述注册表服务单元具体包括:
第一id获取模块,用于从所述节点数据中获取所述主节点id及所述子节点id;
读取模块,用于将所述主节点id及子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则读取所述节点数据中的节点数据值,并向所述注册表操作单元返回所述节点数据及确认字符;若没有,则向所述注册表操作单元返回否定应答字符;
所述注册表操作单元,还用于在接收到所述确认字符和所述节点数据后,确认读取操作成功,并将所述节点数据传递至所述注册表编辑器或所述用户进程;在接收到所述否定应答字符后,确认读取操作失败,并向所述注册表编辑器或所述用户进程反馈读取失败信息。
优选地,所述内存注册表为一种将临时配置数据根据预先设计好的数据结构写入内存中,而不写入磁盘的配置表,其中,所述内存注册表由至少一个节点构成,每个节点包括主节点及子节点,所述主节点包括主节点id,所述子节点包括子节点id及节点数据值。
优选地,所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点id、子节点id、节点数据值及临时数据标记;所述操作方式为写入;
则所述注册表服务单元具体包括:
第二id获取模块,用于从所述节点数据中获取所述主节点id及所述子节点id;
写入模块,用于将所述主节点id及所述子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则将查询到的所述节点的节点数据值修改为所述节点数据的节点数据值;若没有,则将所述节点数据添加到所述内存注册表中;
第一临时数据判断模块,用于判断所述节点数据的临时数据标记是否为0,若是,则向所述注册表操作单元返回确认字符;若不是,则调用所述数据库接口将所述节点数据写入到所述注册表数据文件中,并向所述注册表操作单元返回确认字符。
优选地,所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点id、子节点id、节点数据值及临时数据标记;所述操作方式为删除;
则所述注册表服务单元具体包括:
第三id获取模块,用于从所述节点数据中获取所述主节点id及所述子节点id;
删除模块,用于将所述主节点id及子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则删除所述节点,并通知第二临时数据判断模块;若没有,则向所述注册表操作单元返回否定应答字符;
所述第二临时数据判断模块,用于判断所述节点数据的临时数据标记是否为0,若是,则向所述注册表操作单元返回确认字符;若不是,则调用所述数据库接口将所述节点数据从所述注册表数据文件中删除,并向所述注册表操作单元返回确认字符。
本发明还提供一种基于Linux的注册表服务方法,包括:
加载操作系统下的注册表数据文件,并通过数据库接口读取所述注册表数据文件中已保存的配置表数据,在内存中构建内存注册表;
从注册表编辑器或者用户进程中收集节点数据;
根据针对所述内存注册表的操作方式,对所述内存注册表中与所述节点数对应的节点进行相应的操作,并在操作完成后,根据操作结果生成操作确认符;其中,所述操作方式为读取、写入、删除中的一种;
所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点id、子节点id及节点数据值;所述操作方式为读取;
则所述根据所述节点数据及针对所述内存注册表的操作方式,对所述内存注册表进行相应的操作,并在操作完成后,根据操作结果生成操作确认符,具体包括:
从所述节点数据中获取所述主节点id及所述子节点id;
将所述主节点id及子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则读取所述节点数据中的节点数据值,并生成确认字符;若没有,则生成否定应答字符。
优选地,所述内存注册表为一种将临时配置数据根据预先设计好的数据结构写入内存中,而不写入磁盘的配置表,其中,所述内存注册表由至少一个节点构成,每个节点至少包括主节点id、子节点id及节点数据值。
优选地,所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点id、子节点id、节点数据值及临时数据标记;所述操作方式为写入;
则所述根据所述节点数据及针对所述内存注册表的操作方式,对所述内存注册表进行相应的操作,并在操作完成后,根据操作结果生成操作确认符,具体包括:
从所述节点数据中获取所述主节点id及所述子节点id;
将所述主节点id及所述子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则将查询到的所述节点的节点数据值修改为所述节点数据的节点数据值;若没有,则将所述节点数据添加到所述内存注册表中;
判断所述节点数据的临时数据标记是否为0,若是,则生成确认字符;若不是,则在调用数据库接口将所述节点数据写入到所述注册表数据文件中后,生成确认字符。
优选地,所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点id、子节点id、节点数据值及临时数据标记;所述操作方式为删除;
则所述根据所述节点数据及针对所述内存注册表的操作方式,对所述内存注册表进行相应的操作,并在操作完成后,根据操作结果生成操作确认符,具体包括:
从所述节点数据中获取所述主节点id及所述子节点id;
将所述主节点id及子节点id传入所述内存注册表的读取数据接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则删除所述节点,并判断所述节点数据的临时数据标记是否为0,若是,则生成确认字符;若不是,则在调用数据库接口将所述节点数据从所述注册表数据文件中删除后,生成确认字符;若没有,则生成否定应答字符。
本发明还提供一种金融自助设备,包括上述的Linux的注册表服务系统。
本发明实施例提供的基于Linux的注册表服务系统及方法,通过在内存中构建内存注册表,并在内存中对内存注册表中进行节点数据的操作,可为运行的所有软件提供一种统一、高效、安全的注册表配置数据操作,满足各个进程间数据共享的需求。同时还可以实现与windows注册表兼容的文件格式,提供高效的windows平台代码移植接口,可使windows代码快速移植到Linux内核平台。此外,由于是在内存中进行操作的,还可提供高效的存储,并保证注册表读写安全与多并发访问的安全。
本发明所述基于Linux的注册表服务系统及方法应用于金融自助设备(如自助柜员机ATM、远程视频柜员机VTM、清分机等),可实现系统自主可控,提高设备的安全性。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的基于Linux的注册表服务系统的结构示意图。
图2是本发明实施例提供的基于Linux的注册表服务系统的工作原理图。
图3是本发明实施例提供的内存注册表的数据结构图。
图4是图3所示的内存注册表的节点的数据结构图。
图5是本发明实施例提供的注册表操作单元的工作原理图。
图6是本发明实施例提供的注册表服务单元的一种结构示意图。
图7是本发明实施例提供的注册表服务单元的一种结构示意图。
图8是本发明实施例提供的注册表服务单元的一种结构示意图。
图9是本发明实施例提供的基于Linux的注册表服务方法的流程示意图。
图10是本发明实施例提供的注册表操作单元的执行流程图。
图11为本发明实施例提供的内存注册表构建单元与注册表服务单元的执行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1及图2,本发明提供一种基于Linux的注册表服务系统(以下称为注册表服务系统)100,所述注册表服务系统100包括内存注册表构建单元10、注册表操作单元20及注册表服务单元30,其中:
所述内存注册表构建单元10,用于加载操作系统下的注册表数据文件,并通过数据库接口读取所述注册表数据文件中已保存的配置表数据,在内存中构建内存注册表。
在本发明实施例中,所述注册表服务系统100启动后,所述内存注册表构建单元10可加载操作系统下的注册表数据文件(对于Linux系统,可加载/etc/reg.dat),并通过数据库接口(如sqlite3接口)读取所述注册表数据文件中已保存的配置表数据,在内存中构建内存注册表。
在本发明实施例中,所述内存注册表为一种将临时配置数据根据预先设计好的数据结构写入内存中,而不写入磁盘的配置表,且所述内存注册表会在系统重启后进行重置,即在系统重启后,所述内存注册表就会被删除。
请一并参阅图3,所述内存注册表由若干个节点构成,其中,每个节点包括至少一个主节点(tabRegNode)和一个子节点(tabRegItem),所述主节点与所述子节点的数据结构如图4所示,其中,FK为数据库外键,PK为数据库主键。
所述注册表操作单元20,用于从注册表编辑器或者用户进程中收集节点数据,并将所述节点数据传输给注册表服务单元30。
在本发明实施例中,所述节点数据也具有如图4所示的数据结构。
请一并参阅图5,在本发明实施例中,所述注册表操作单元20可通过调用Reg API读/写数据接口,将所述节点数据传入接口,此后,所述注册表操作单元20将所述节点数据封装成适于传输的数据流格式(如二进制数据流)后,通过TCP/IP协议发送到所述注册表服务单元30。
在本发明实施例中,在将所述封装过的节点数据发送给所述注册表服务单元30后,所述注册表操作单元20等待所述注册表服务单元30返回的操作确认符。其中,所述操作确认符可包括返回确认字符(Ack)及否定应答字符(Nak)。
所述注册表服务单元30,用于针对所述内存注册表的操作方式,对所述内存注册表中与所述节点数据对应的节点进行相应的操作,并在操作完成后,根据操作结果向所述注册表操作单元20返回操作确认符;其中,所述操作方式为读取、写入、删除中的一种。
在本发明实施例中,对所述对内存注册表的操作方式主要有读取、写入(包括修改和添加)、删除。下面将逐一进行说明。
请一并参阅图6,当所述操作方式为读取时:
则所述注册表服务单元30具体包括:
第一id获取模块31,用于从所述节点数据中获取所述主节点id及所述子节点id。
在本发明实施例中,所述注册表服务单元30在接收到所述节点数据后,解析所述节点数据后,从所述节点数据中获取主节点id和子节点id。
读取模块32,用于将所述主节点id及子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则读取所述节点数据中的节点数据值,并通过tcp/ip协议向所述注册表操作单元20返回确认字符(Ack)及封装过的节点数据;若没有,则通过tcp/ip协议向所述注册表操作单元20返回否定应答字符(Nak)。
在本发明实施例中,所述注册表操作单元20在接收到所述确认字符和所述节点数据后,确认读取操作成功,并对所述节点数据进行解析后,将所述节点数据传递至所述注册表编辑器或所述用户进程;在接收到所述否定应答字符后,确认读取操作失败,并向所述注册表编辑器或所述用户进程反馈读取失败信息。
请参阅图7,当所述操作方式为写入(包括修改及添加):
则所述注册表服务单元30具体包括:
第二id获取模块33,用于从所述节点数据中获取所述主节点id及所述子节点id。
写入模块34,用于将所述主节点id及所述子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则将查询到的所述节点的节点数据值修改为所述节点数据的节点数据值;若没有,则将所述节点数据添加到所述内存注册表中。
第一临时数据判断模块35,用于判断所述节点数据的临时数据标记是否为0,若是,则向所述注册表操作单元20返回确认字符;若不是,则调用所述数据库接口将所述节点数据写入到所述注册表数据文件中,并向所述注册表操作单元20返回确认字符。
在本发明实施例中,若所述临时数据标记(tmp)为0,则说明所述节点数据为临时数据,只需在所述内存注册表上进行写入即可,即不需要存储到磁盘上。若不为0,则说明所述节点数据为非临时数据,则除了在所述内存注册表上写入,还需要写入到操作系统下的注册表数据文件中(即写入到/etc/reg.dat中)。
在本发明实施例中,所述注册表操作单元20在接收到所述确认字符和所述节点数据后,确认写入操作成功;在接收到所述否定应答字符后,确认写入操作失败,并向所述注册表编辑器或所述用户进程反馈写入失败信息。
请参阅图8,当所述操作方式为删除时:
则所述注册表服务单元30具体包括:
第三id获取模块36,用于从所述节点数据中获取所述主节点id及所述子节点id。
删除模块37,用于将所述主节点id及子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则删除所述节点,并通知第二临时数据判断模块38;若没有,则向所述注册表操作单元20返回否定应答字符;
所述第二临时数据判断模块38,用于判断所述节点数据的临时数据标记是否为0,若是,则向所述注册表操作单元返回确认字符;若不是,则调用所述数据库接口将所述节点数据从所述注册表数据文件中删除,并向所述注册表操作单元返回确认字符。
在本发明实施例中,所述注册表操作单元20在接收到所述确认字符和所述节点数据后,确认删除操作成功;在接收到所述否定应答字符后,确认删除操作失败,并向所述注册表编辑器或所述用户进程反馈删除失败信息。
需要说明的是,上述实施例中,若所述注册表操作单元20在预定时间内未接收到所述注册表服务单元30返回的操作确认符时,则所述注册表操作单元20报告通信超时,通知所述注册表编辑器或者用户操作失败,并结束本次操作。
综上所述,本发明实施例提供的注册表服务系统100,通过所述内存注册表构建单元10在内存中构建内存注册表,所述注册表服务单元30在内存注册表中进行数据的操作,可为运行的所有软件提供一种统一、高效、安全的注册表配置数据的操作,满足各个进程间数据共享的需求。同时还可以实现与windows注册表兼容的文件格式,提供高效的windows平台代码移植接口,可使windows代码快速移植到Linux内核平台。此外,由于内存注册表的操作是在内存中进行地,可提供高效的存储,并保证注册表读写安全与多并发访问的安全。
请一并参阅图9,本发明还提供一种基于Linux的注册表服务方法,所述注册表服务方法可由上述的注册表服务系统100来执行,并包括如下步骤:
S101,加载操作系统下的注册表数据文件,并通过数据库接口读取所述注册表数据文件中已保存的配置表数据,在内存中构建内存注册表。
在本发明实施例中,所述注册表服务系统启动后,可加载操作系统下的注册表数据文件(对于Linux系统,可加载/etc/reg.dat),并通过数据库接口(如sqlite3接口)读取所述注册表数据文件中已保存的配置表数据,在内存中构建内存注册表。
其中,所述内存注册表为一种将临时配置数据根据预先设计好的数据结构写入内存中,而不写入磁盘的配置表。所述内存注册表的具体数据结构可参考图3及图4.
S102,从注册表编辑器或者用户进程中收集节点数据。
在本发明实施例中,注册表操作单元20可通过调用Reg API读/写数据接口,将所述节点数据传入接口,此后,所述注册表操作单元20将所述节点数据封装成适于传输的数据流格式(如二进制数据流)后,通过TCP/IP协议发送到所述注册表服务单元30。
S103,根据针对所述内存注册表的操作方式,对所述内存注册表中与所述节点数据对应的节点进行相应的操作,并在操作完成后,根据操作结果生成操作确认符;其中,所述操作方式为读取、写入、删除中的一种。
在本发明实施例中,对所述对内存注册表的操作方式主要有读取、写入(包括修改和添加)、删除。下面将逐一进行说明。
所述操作方式为读取;
则步骤S103具体包括:
S1031,从所述节点数据中获取所述主节点id及所述子节点id。
S1032,将所述主节点id及子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则读取所述节点数据中的节点数据值,并生成确认字符;若没有,则生成否定应答字符。
在本发明实施例中,所述注册表操作单元20在接收到所述确认字符和所述节点数据后,确认读取操作成功,并对所述节点数据进行解析后,将所述节点数据传递至所述注册表编辑器或所述用户进程;在接收到所述否定应答字符后,确认读取操作失败,并向所述注册表编辑器或所述用户进程反馈读取失败信息。
当所述操作方式为写入,则步骤S103具体包括:
S1033,从所述节点数据中获取所述主节点id及所述子节点id。
S1034,将所述主节点id及所述子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则将查询到的所述节点的节点数据值修改为所述节点数据的节点数据值;若没有,则将所述节点数据添加到所述内存注册表中。
S1035,判断所述节点数据的临时数据标记是否为0,若是,则生成确认字符;若不是,则在调用数据库接口将所述节点数据写入到所述注册表数据文件中后,生成确认字符。
在本发明实施例中,若所述临时数据标记(tmp)为0,则说明所述节点数据为临时数据,只需在所述内存注册表上进行写入即可,即不需要存储到磁盘上。若不为0,则说明所述节点数据为非临时数据,则除了在所述内存注册表上写入,还需要写入到操作系统下的注册表数据文件中(即写入到/etc/reg.dat中)。
在本发明实施例中,所述注册表操作单元20在接收到所述确认字符和所述节点数据后,确认写入操作成功;在接收到所述否定应答字符后,确认写入操作失败,并向所述注册表编辑器或所述用户进程反馈写入失败信息。
当所述操作方式为删除,则步骤S103具体包括:
S1036,从所述节点数据中获取所述主节点id及所述子节点id。
S1037,将所述主节点id及子节点id传入所述内存注册表的读取数据接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则删除所述节点,并判断所述节点数据的临时数据标记是否为0,若是,则生成确认字符;若不是,则在调用数据库接口将所述节点数据从所述注册表数据文件中删除后,生成确认字符;若没有,则生成否定应答字符。
在本发明实施例中,所述注册表操作单元20在接收到所述确认字符和所述节点数据后,确认删除操作成功;在接收到所述否定应答字符后,确认删除操作失败,并向所述注册表编辑器或所述用户进程反馈删除失败信息。
需要说明的是,上述实施例中,若所述注册表操作单元20在预定时间内未接收到所述注册表服务单元30返回的操作确认符时,则所述注册表操作单元20报告通信超时,通知所述注册表编辑器或者用户操作失败,并结束本次操作。
综上所述,本发明实施例提供的基于Linux的注册表服务方法,通过在内存中构建内存注册表,并在内存中对内存注册表中进行节点数据的操作,可为运行的所有软件提供一种统一、高效、安全的注册表配置数据操作,满足各个进程间数据共享的需求。同时还可以实现与windows注册表兼容的文件格式,提供高效的windows平台代码移植接口,可使windows代码快速移植到Linux内核平台。此外,此外,由于对所述内存注册表的操作是在内存中进行地,可提供高效的存储,并保证注册表读写安全与多并发访问的安全。
请一并参阅图10和图11,图10为所述注册表操作单元的执行流程图。图11为所述内存注册表构建单元与所述注册表服务单元的执行流程图。
(一)读取数据:
S13:注册表系统服务开始运行。
S14:内存注册表构建单元加载/etc/reg.dat文件,通过sqlite3读取已保存配置表数据,构建内存注册表。
S1:注册表操作单元开始被调用。
S2:注册表编辑器或者用户进程构建出节点数据,并传入节点数据。
S3:调用Reg API读数据接口,将节点数据传入接口。
S4:将节点数据封装成二进制数据流。
S5:将二进制数据流通过TCP/IP协议发送到注册表服务单元。注册表操作服务单元将从S15开始运作。
S6:注册表操作单元等待注册表服务单元返回操作确认符,如果返回Ack,跳转执行S8;如果返回Nak,跳转执行S7;如果未有确认码返回,跳转执行S11。
S8:接收Ack数据,确认操作成功。
S9:判断是否为读取操作,若是,则执行S10。
S10:获取到反馈的二进制数据流,还原为节点数据,传送给注册表编辑器或者用户进程。跳转到S12。
S7:接收到Nak数据,读取操作失败,通知注册表编辑器或者用户进程获取失败。跳转到S12。
S11:未有数据返回,报告通信超时,通知注册表编辑器或者用户进程读取失败。跳转到S12。
S12:读取过程结束。
S15:内存注册表建立TCP/IP连接,等待接收二进制数据流。
S16:判断是否接收到数据,收到数据跳转S18,未收到数据跳转S17。
S17:判断是否结束服务。结束服务跳转到S19,继续运行跳转到S15。
S19:退出注册表服务单元。
S18:解析二进制流数据,构建节点数据。
S20:从节点数据中获取tabRegNode id(主节点id)与tabRegItem id(子节点id)。
S21:判断该数据操作方式,本过程为读取数据,直接跳转S27。
S27:将节点数据传入读取数据接口。
S28:判断内存注册表内是否存在与传入节点相同tabRegNode id与tabRegItemid的节点。存在跳转S29,不存在跳转S31。
S29:读取节点数据的节点数据值。
S30:通过TCP/IP通信发送Ack和节点数据与注册表操作单元,跳转到S15。
S31:TCP/IP发送Nak与注册表操作单元,跳转到S15。
(二)写入(添加/修改)数据:
S13:注册表服务系统开始运行。
S14:内存注册表构建单元加载/etc/reg.dat文件,通过sqlite3读取已保存配置表数据,构建内存注册表。
S1:注册表操作单元开始被调用。
S2:注册表编辑器或者用户进程构建出节点数据,并传入节点数据。
S3:调用Reg API读数据接口,将节点数据传入接口。
S4:将节点数据封装成二进制数据流。
S5:将二进制数据流通过TCP/IP协议发送到注册表服务单元。注册表服务单元将从S15开始运作。
S6:注册表操作单元等待注册表服务单元返回操作确认符,如果返回Ack,跳转执行S8;如果返回Nak,跳转执行S7;如果未有确认码返回,跳转执行S11。
S8:接收Ack数据,确认操作成功。
S9:判断是否为读取操作,该应该过程不是读取操作,跳转到S12
S7:接收到Nak数据,添加/修改数据操作失败,通知注册表编辑器或者用户进程操作失败。跳转到S12。
S11:未有数据返回,报告通信超时,通知注册表编辑器或者用户进程执行失败。跳转到S12。
S12:读取过程结束。
S15:内存注册表建立TCP/IP连接,等待接收二进制数据流。
S16:判断是否接收到数据,收到数据跳转S18,未收到数据跳转到S17。
S17:判断是否结束服务。结束服务跳转到S19,继续运行跳转到S15。
S19:退出注册表服务单元。
S18:解析二进制数据流,构建节点数据。
S20:从节点数据中获取tabRegNode id与tabRegItem id值。
S21:判断该数据操作方式,本过程为添加/修改数据操作,直接跳转S22。
S22:判断内存注册表内是否存在与传入节点数据相同tabRegNode id与tabRegItem id值的节点。存在跳转S23,不存在跳转S38。
S23:直接修改与tabRegNode id与tabRegItem id值相同的节点数据值。跳转到S24。
S38:将节点数据添加入内存注册表中。跳转到S24。
S24:读取临时数据标记tmp,如果为0,跳转S26,否则跳转S25。
S25:调用Sqlite3接口将节点数据写入/etc/reg.dat文件中。跳转S26。
S26:TCP/IP发送Ack与注册表操作单元,确认写入数据成功,跳转到S15。
(三)删除数据:
S13:注册表服务系统开始运行。
S14:内存注册表构建单元加载/etc/reg.dat文件,通过sqlite3读取已保存配置表数据,构建内存注册表。
S1:注册表操作单元开始被调用。
S2:注册表编辑器或者用户进程构建出节点数据,并传入节点数据。
S3:调用Reg API读数据接口,将节点数据传入接口。
S4:将节点数据封装成二进制数据流。
S5:将二进制数据流通过TCP/IP协议发送到注册表服务单元。注册表服务单元将从S15开始运作。
S6:注册表操作单元等待注册表服务单元返回操作确认符,如果返回Ack,跳转执行S8;如果返回Nak,跳转执行S7;如果未有确认码返回,跳转执行S11。
S8:接收Ack数据,确认操作成功。
S9:判断是否为读取操作,该应该过程不是读取操作,跳转到S12
S7:接收到Nak数据,添加/修改数据操作失败,通知注册表编辑器或者用户进程操作失败。跳转到S12。
S11:未有数据返回,报告通信超时,通知注册表编辑器或者用户进程执行失败。跳转到S12。
S12:读取过程结束。
S15:内存注册表建立TCP/IP连接,等待接收二进制流数据。
S16:判断是否接收到数据,收到数据跳转S18,未收到数据跳转到S17。
S17:判断是否结束服务。结束服务跳转到S19,继续运行跳转到S15。
S19:退出注册表操作服务单元。
S18:解析二进制数据流,构建节点数据。
S20:从节点数据中获取tabRegNode id与tabRegItem id。
S21:判断该数据操作方式,本过程删除数据操作,直接跳转S32。
S32:判断内存注册表内是否存在与传入节点数据相同tabRegNode id与tabRegItem id值的节点。存在跳转S33,不存在跳转S34。
S33:删除所述内存注册表中与tabRegNode id与tabRegItem id相同的节点。跳转到S35。
S34:TCP/IP发送Nak注册表操作单元,通知删除失败,跳转到S15。
S35:读取tmp临时数据标记,如果为0,跳转S37,否则跳转S36。
S36:调用Sqlite3接口将节点数据从/etc/reg.dat文件中删除。跳转S37。
S37:TCP/IP发送Ack与注册表操作单元,确认删除数据成功,跳转到S15。
综上所述,本发明实施例提供的注册表服务方法,通过构建内存注册表,并在内存注册表中进行节点数据的操作,可为运行的所有软件提供一种统一、高效、安全的注册表配置数据操作,满足各个进程间数据共享的需求。同时还可以实现与windows注册表兼容的文件格式,提供高效的windows平台代码移植接口,可使windows代码快速移植到Linux内核平台。此外,由于采用内存注册表的操作方式,可提供高效的存储,并保证注册表读写安全与多并发访问的安全。
本发明还提供一种金融自助设备,所述金融自助设备可为自助柜员机ATM、远程视频柜员机VTM、清分机等,其包括上述的基于Linux的注册表服务系统100(或者包括与所述注册表服务方法对应的程序代码)。所述金融自助设备可实现系统自主可控,并提高了设备的安全性。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
Claims (9)
1.一种基于Linux的注册表服务系统,其特征在于,包括:
内存注册表构建单元,用于加载操作系统下的注册表数据文件,并通过数据库接口读取所述注册表数据文件中已保存的配置表数据,在内存中构建内存注册表;
注册表操作单元,用于从注册表编辑器或者用户进程中收集节点数据,并将所述节点数据传输给注册表服务单元;
所述注册表服务单元,用于根据针对所述内存注册表的操作方式,对所述内存注册表中与所述节点数据对应的节点进行相应的操作,并在操作完成后,根据操作结果向所述注册表操作单元返回操作确认符;其中,所述操作方式为读取、写入、删除中的一种;
所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点及子节点,所述主节点包括主节点id,所述子节点包括子节点id及节点数据值;所述操作方式为读取;
则所述注册表服务单元具体包括:
第一id获取模块,用于从所述节点数据中获取所述主节点id及所述子节点id;
读取模块,用于将所述主节点id及子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则读取所述节点数据中的节点数据值,并向所述注册表操作单元返回所述节点数据及确认字符;若没有,则向所述注册表操作单元返回否定应答字符;
所述注册表操作单元,还用于在接收到所述确认字符和所述节点数据后,确认读取操作成功,并将所述节点数据传递至所述注册表编辑器或所述用户进程;在接收到所述否定应答字符后,确认读取操作失败,并向所述注册表编辑器或所述用户进程反馈读取失败信息。
2.根据权利要求1所述的基于Linux的注册表服务系统,其特征在于,
所述内存注册表为一种将临时配置数据根据预先设计好的数据结构写入内存中,而不写入磁盘的配置表,其中,所述内存注册表由至少一个节点构成,每个节点包括主节点及子节点,所述主节点包括主节点id,所述子节点包括子节点id及节点数据值。
3.根据权利要求1或2所述的基于Linux的注册表服务系统,其特征在于,所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点id、子节点id、节点数据值及临时数据标记;所述操作方式为写入;
则所述注册表服务单元具体包括:
第二id获取模块,用于从所述节点数据中获取所述主节点id及所述子节点id;
写入模块,用于将所述主节点id及所述子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则将查询到的所述节点的节点数据值修改为所述节点数据的节点数据值;若没有,则将所述节点数据添加到所述内存注册表中;
第一临时数据判断模块,用于判断所述节点数据的临时数据标记是否为0,若是,则向所述注册表操作单元返回确认字符;若不是,则调用所述数据库接口将所述节点数据写入到所述注册表数据文件中,并向所述注册表操作单元返回确认字符。
4.根据权利要求1或2所述的基于Linux的注册表服务系统,其特征在于,所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点id、子节点id、节点数据值及临时数据标记;所述操作方式为删除;
则所述注册表服务单元具体包括:
第三id获取模块,用于从所述节点数据中获取所述主节点id及所述子节点id;
删除模块,用于将所述主节点id及子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则删除所述节点,并通知第二临时数据判断模块;若没有,则向所述注册表操作单元返回否定应答字符;
所述第二临时数据判断模块,用于判断所述节点数据的临时数据标记是否为0,若是,则向所述注册表操作单元返回确认字符;若不是,则调用所述数据库接口将所述节点数据从所述注册表数据文件中删除,并向所述注册表操作单元返回确认字符。
5.一种基于Linux的注册表服务方法,其特征在于,包括:
加载操作系统下的注册表数据文件,并通过数据库接口读取所述注册表数据文件中已保存的配置表数据,在内存中构建内存注册表;
从注册表编辑器或者用户进程中收集节点数据;
根据针对所述内存注册表的操作方式,对所述内存注册表中与所述节点数对应的节点进行相应的操作,并在操作完成后,根据操作结果生成操作确认符;其中,所述操作方式为读取、写入、删除中的一种;
所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点id、子节点id及节点数据值;所述操作方式为读取;
则所述根据所述节点数据及针对所述内存注册表的操作方式,对所述内存注册表进行相应的操作,并在操作完成后,根据操作结果生成操作确认符,具体包括:
从所述节点数据中获取所述主节点id及所述子节点id;
将所述主节点id及子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则读取所述节点数据中的节点数据值,并生成确认字符;若没有,则生成否定应答字符。
6.根据权利要求5所述的基于Linux的注册表服务方法,其特征在于,
所述内存注册表为一种将临时配置数据根据预先设计好的数据结构写入内存中,而不写入磁盘的配置表,其中,所述内存注册表由至少一个节点构成,每个节点至少包括主节点id、子节点id及节点数据值。
7.根据权利要求5或6所述的基于Linux的注册表服务方法,其特征在于,所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点id、子节点id、节点数据值及临时数据标记;所述操作方式为写入;
则所述根据所述节点数据及针对所述内存注册表的操作方式,对所述内存注册表进行相应的操作,并在操作完成后,根据操作结果生成操作确认符,具体包括:
从所述节点数据中获取所述主节点id及所述子节点id;
将所述主节点id及所述子节点id传入所述内存注册表的读取接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则将查询到的所述节点的节点数据值修改为所述节点数据的节点数据值;若没有,则将所述节点数据添加到所述内存注册表中;
判断所述节点数据的临时数据标记是否为0,若是,则生成确认字符;若不是,则在调用数据库接口将所述节点数据写入到所述注册表数据文件中后,生成确认字符。
8.根据权利要求5或6所述的基于Linux的注册表服务方法,其特征在于,所述操作确认符为确认字符或否定应答字符,所述节点数据包括主节点id、子节点id、节点数据值及临时数据标记;所述操作方式为删除;
则所述根据所述节点数据及针对所述内存注册表的操作方式,对所述内存注册表进行相应的操作,并在操作完成后,根据操作结果生成操作确认符,具体包括:
从所述节点数据中获取所述主节点id及所述子节点id;
将所述主节点id及子节点id传入所述内存注册表的读取数据接口中,并查询所述内存注册表中是否存在与所述节点数据具有相同主节点id及子节点id的节点;若有,则删除所述节点,并判断所述节点数据的临时数据标记是否为0,若是,则生成确认字符;若不是,则在调用数据库接口将所述节点数据从所述注册表数据文件中删除后,生成确认字符;若没有,则生成否定应答字符。
9.一种金融自助设备,其特征在于,包括如权利要求1-4任意一项所述的基于Linux的注册表服务系统。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610293612.3A CN105912952B (zh) | 2016-05-04 | 2016-05-04 | 一种基于Linux的注册表服务系统、方法及金融自助设备 |
PCT/CN2017/082939 WO2017190663A1 (zh) | 2016-05-04 | 2017-05-03 | 一种基于Linux的注册表服务系统、方法及金融自助设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610293612.3A CN105912952B (zh) | 2016-05-04 | 2016-05-04 | 一种基于Linux的注册表服务系统、方法及金融自助设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105912952A CN105912952A (zh) | 2016-08-31 |
CN105912952B true CN105912952B (zh) | 2019-07-23 |
Family
ID=56752311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610293612.3A Active CN105912952B (zh) | 2016-05-04 | 2016-05-04 | 一种基于Linux的注册表服务系统、方法及金融自助设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105912952B (zh) |
WO (1) | WO2017190663A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912952B (zh) * | 2016-05-04 | 2019-07-23 | 广州广电运通金融电子股份有限公司 | 一种基于Linux的注册表服务系统、方法及金融自助设备 |
CN106844581A (zh) * | 2017-01-10 | 2017-06-13 | 山东华软金盾软件股份有限公司 | 一种Linux下注册表的模拟实现方法 |
CN109389779A (zh) * | 2018-08-28 | 2019-02-26 | 苏州浪潮智能软件有限公司 | 一种Linux系统下的金融设备统一调用方法 |
CN113094124A (zh) * | 2021-03-31 | 2021-07-09 | 北京星阑科技有限公司 | 一种基于Sqlite3的操作系统信息处理方法及系统 |
CN115328580B (zh) * | 2022-10-13 | 2022-12-16 | 中科方德软件有限公司 | 应用移植环境下注册表操作的处理方法、装置和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178662A (zh) * | 2006-11-08 | 2008-05-14 | 中兴通讯股份有限公司 | 一种嵌入式linux应用进程的监控方法 |
US7448084B1 (en) * | 2002-01-25 | 2008-11-04 | The Trustees Of Columbia University In The City Of New York | System and methods for detecting intrusions in a computer system by monitoring operating system registry accesses |
CN102117286A (zh) * | 2009-12-30 | 2011-07-06 | 北大方正集团有限公司 | 注册表系统及运行方法 |
CN104375841A (zh) * | 2014-12-03 | 2015-02-25 | 广州广电运通金融电子股份有限公司 | 一种基于linux系统的CEN/XFS标准的架构以及实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912952B (zh) * | 2016-05-04 | 2019-07-23 | 广州广电运通金融电子股份有限公司 | 一种基于Linux的注册表服务系统、方法及金融自助设备 |
-
2016
- 2016-05-04 CN CN201610293612.3A patent/CN105912952B/zh active Active
-
2017
- 2017-05-03 WO PCT/CN2017/082939 patent/WO2017190663A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7448084B1 (en) * | 2002-01-25 | 2008-11-04 | The Trustees Of Columbia University In The City Of New York | System and methods for detecting intrusions in a computer system by monitoring operating system registry accesses |
CN101178662A (zh) * | 2006-11-08 | 2008-05-14 | 中兴通讯股份有限公司 | 一种嵌入式linux应用进程的监控方法 |
CN102117286A (zh) * | 2009-12-30 | 2011-07-06 | 北大方正集团有限公司 | 注册表系统及运行方法 |
CN104375841A (zh) * | 2014-12-03 | 2015-02-25 | 广州广电运通金融电子股份有限公司 | 一种基于linux系统的CEN/XFS标准的架构以及实现方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017190663A1 (zh) | 2017-11-09 |
CN105912952A (zh) | 2016-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105912952B (zh) | 一种基于Linux的注册表服务系统、方法及金融自助设备 | |
CN105183675B (zh) | 对usb设备的访问方法、装置、终端、服务器及系统 | |
CN100461096C (zh) | 动态注册表分区系统和方法 | |
CN102087615B (zh) | 消息队列中消息的合并的方法和系统 | |
KR101076910B1 (ko) | 객체 지향 언어로의 병행 프로그램 구현 | |
US20060277275A1 (en) | Dynamic management of communication ports, devices, and logical connections | |
US7984438B2 (en) | Virtual machine transitioning from emulating mode to enlightened mode | |
US20040243668A1 (en) | Application programming interface for implementing directory service access using directory service markup language | |
CN105243407B (zh) | 读写智能卡的方法及装置 | |
CN107209666A (zh) | 计算机系统 | |
CN107005567A (zh) | 实现通信事件 | |
CN103927198A (zh) | 一种软件清理方法及装置 | |
CN104731943B (zh) | 一种服务器和数据处理方法 | |
CN103092777A (zh) | 存储和恢复应用运行时状态 | |
US20090150869A1 (en) | System and method of monitoring dynamic scopes in synchronous and asynchronous calls | |
CN105844146B (zh) | 一种保护驱动程序的方法、装置及电子设备 | |
CN107135188A (zh) | 金融信息交换fix协议的业务实现方法、装置及系统 | |
CN107908488A (zh) | 消息请求接口交互方法、装置、计算机设备及存储介质 | |
CN107301095A (zh) | 系统运行方法以及操作系统 | |
CN104317578A (zh) | 基于引擎Lua脚本应用和引擎与Lua脚本相互调用方法及装置 | |
CN110138662A (zh) | 多核系统中的会话表项处理方法、装置及多核系统 | |
US6973657B1 (en) | Method for middle-tier optimization in CORBA OTS | |
CN106210285A (zh) | 一种录音安全控制方法、装置和设备 | |
CN107682389A (zh) | 一种执行网络请求的方法、终端及计算机可读存储介质 | |
CN107749931A (zh) | 互动式语音应答的方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |