基于系统调用包裹技术的可迁移软件使用模式的制作方法

文档序号:6573483阅读:167来源:国知局
专利名称:基于系统调用包裹技术的可迁移软件使用模式的制作方法
技术领域
基于系统调用包裹技术的可迁移软件使用模式(以下简称可迁移使用模式)属于计算机软 件领域。
背景技术
硬件成本的降低、网络基础环境的大幅改善使得人们更容易在各种场合使用计算机,但 关键问题是如何在这些不同的计算机上重现每个使用者所熟悉的个人工作环境(而不是依赖 于背负一个笔记本电脑)——主要包括个性化的应用程序及其配置等。比如一个用户在家里 有一个固定的视窗(Windows)工作环境以及一系列所需要的应用程序,如办公软件、媒体处理 软件、即时通信软件等;但当他在出差的时候,如何在其他的机器上使用这些软件呢?即便 这些软件安装在其他机器上,那又如何获得其个性化的软件配置呢?
目前存在的解决方案是基于服务器的瘦客户机计算模式即用户所使用的机器是作为一 个瘦客户机登录到服务器(可以是一台或多台专用的服务器,或者是用户的个人计算机),客 户机只作为图形终端使用,所有的应用与服务都运行在服务器上。但这种方式有两个问题 首先如果有多人登录的话,服务器的负载容易过重;再者,通过广域网的连接会引入很大的 网络延迟,这个问题无法通过增加网络带宽来解决,因此用户体验可能很差。这方面的方案 有Citrix MetaFrame, Microsoft Windows Terminal Services (WTS) , AT&T Virtual Network Computing(VNC) , Tarantella等。
还有一种方式是基于浏览器的应用模式,即以浏览器为应用平台,开发各种以浏览器插 件形式提供的软件应用,这样只要有网络与兼容的浏览器,就可以使用所需要的程序。这个 方案较为方便、普适性也很好,主要的问题在于与现有的软件不兼容,需要重新开发;而且 依赖于浏览器的版本兼容性。这方面现有的方案有Google Office、 Adobe的Apollo平台、 微软的Windows Presentation Foundation以及开源平台OpenLaszlo。

发明内容
我们的发明专利的目的在于避免瘦客户机计算模式所引入的用户体验问题、以及避免基 于浏览器的应用模式所带来的软件不兼容问题,而提供一种让使用者在任意的Windows个人 计算机上不用安装就可以随时使用其个性化的应用软件的方法。
在一般用户看来,我们这个发明所带来的软件使用模式是这样的首先用户只需要随身
携带一个移动存储设备(如优盘、移动硬盘等),将其插入到可以使用该类移动存储设备的任
意一台Windows个人计算机上;或者用户在任意一台联网的Windows个人计算机上登陆相 关的网络服务器后,就可以直接运行移动存储设备或网络服务器上的应用软件(而不需要安 装);而用户在使用期间对软件资源进行的修改都会存储在该移动存储或网络服务器上,从而使 得软件下次运行时(可能是在另外一台机器上)所使用的是最新的资源。
从来源上讲,我们认为个人计算机的应用软件在运行时所需要访问的资源可以划分为两
部分操作系统提供的和非操作系统提供的(也可被称为"应用自有"的)。这里的资源包括
文件(包括配置文件、执行文件、动态链接库以及其他文件)、目录、环境变量与系统注册表。
而所谓"应用自有"指的是一般应用软件在安装后系统增加或变化的那一部分资源包括新
安装的文件、创建的目录、创建或更改的系统注册表项和环境变量。如果将所有这些资源放 置在一个移动存储设备或者一个能够随时访问到的网络服务器上,那么就可能在任何一台个 人计算机上运行软件而不需要安装。
当然,目前主流的计算机软件并没有考虑到这种使用方式。 一般的,它们大都需要一个 安装过程,由此过程在系统上创建"应用自有"的资源,而在运行中则通过系统调用来访问/ 修改包括这些资源在内的所有的运行时所需资源。因此关键问题在于如何在不改变应用软件 代码的前提下截获这些调用,并判断是否是访问"应用自有"的资源——如不是则由默认的
系统调用处理;如是则由我们专门编写的代码进行处理,来访问这些存储于移动存储设备或 网络服务器上的"应用自有"资源。同时将任何的资源修改都保存在移动存储设备或网络服 务器上,使得每次在不同计算机上启动软件后所使用的都是最新的资源。这可以使用系统调 用包裹技术来实现。
另一方面,移动存储设备(如移动硬盘、大容量的u盘等)的容量越来越大,价格却在
不断降低;而且网络基础环境也有了大幅改善,带宽、接入普及程度日益提高。这样,就可 以通过大容量移动存储设备来随身携带,或者使用网络服务器来随时访问应用软件所需的资 源。
所以,本发明的目的是通过如下措施来达到的-在移动存储设备或网络服务器上存储应用软件运行时所需的所有非操作系统提供的资 源,包括其所有的执行文件、动态链接库文件、配置文件以及其它文件、目录结构、注册表 信息、环境变量等;由特定的应用启动程序启动该软件或者由特定的动态链接库伴随该软件 启动运行,并由该应用启动程序或者该动态链接库使用系统调用包裹技术在应用软件的资源 (包括文件系统、注册表、环境变量)访问相关的系统调用与系统的实际系统调用间插入代 码,来截获这些系统调用并进行处理如果是访问这些非操作系统提供的资源,则由这些插 入代码处理——即访问存储在移动存储设备或网络服务器上的资源并返回结果;否则交由默 认的系统调用处理。
这样,虽然所运行的应用软件没有安装在运行主机上,但是当其访问这些应用自有的资 源时,通过系统调用包裹技术所插入的代码能够替代默认的系统调用进行处理并返回结果, 就如同该运行主机上安装有该软件一样。
同时,软件运行时的所有资源修改被存储在移动存储设备或网络服务器上,而不是在主 机硬盘上。
本发明所述的使用模式,其特征在于
它在移动存储设备或网络服务器上保存应用软件运行时所需的所有非操作系统提供的资 源,在未安装该应用软件的视窗个人计算机上,由采用了系统调用包裹技术的应用启动程序 或动态链接库截获该应用软件运行时对于这些资源的访问并重定向到该移动存储设备或网络 服务器上,并将该应用软件运行过程中对所有资源的修改存储在该移动存储设备或网络服务 器上。
本发明所述的所有非操作系统提供的资源,其特征在于
包括文件、目录、注册表信息与环境变量,可以通过监测应用软件的安装过程对于操作 系统的文件系统、系统注册表等的修改来获得。
本发明所述的应用启动程序与/或动态链接库,其特征在于
预先保存于个人计算机之上、或者预先保存于移动存储设备或网络服务器上,由该应用 启动程序启动应用软件或者由该动态链接库伴随应用软件一起运行,通过系统调用包裹技术 在应用软件的资源访问相关的系统调用与默认的系统调用代码间插入代码,由插入代码进行 资源访问处理,并将结果返回给应用软件。
本发明在用户主机上运行应用软件,从而避免了瘦客户机计算模式可能引起的服务器集中负载较重、广域网网络延迟较长引起的用户体验问题,同时可以充分利用用户主机的处理 能力。而与基于浏览器的应用模式相比较,本发明的特色在于其与现有的Windows软件兼容 ——即应用软件不需要修改源码。


图l,本发明的运行时的结构图。
说明涉及到的模块有三个移动存储设备或者网络服务器、应用软件、插入代码。 应用软件即为可以运行在视窗系统上的普通应用软件。
移动存储设备用于保存应用软件的所有运行时所需的非操作系统提供的资源,包括文件、 目录、环境变量与注册表信息。同时还用于保存应用软件运行中对资源所做的修改信息。
类似的,网络服务器也用于保存应用软件的所有运行时所需的非操作系统提供的资源, 包括文件、目录、环境变量与注册表信息;同时还用于保存应用软件运行中对资源所做的修 改信息。个人计算机能够与其相连接并传输数据。
网络服务器与移动存储设备不都是必须的,但两者至少必居其一。
插入代码——由实现了系统调用包裹技术的应用启动程序或动态链接库在应用软件的资 源访问相关的系统调用与默认的系统调用代码间插入的代码。 图2,本发明的使用时的运行流程框图。 图3, Windows的执行文件格式。 图4,代码插入后的执行文件格式。 图5,插入代码的总体流程。
具体实施例方式
我们将该可迁移使用方式的实现分为"应用软件的非操作系统提供的资源的获得"与"运 行中资源相关的系统调用的截获与处理"两个方面,并进行具体实现的介绍。以下以使用移 动存储设备来存储非操作系统提供的资源为例来进行具体介绍下面所述的计算机均为x86 个人电脑,操作系统为Windows XP SP2,移动存储设备为USB 2. 0移动硬盘(容量40G)。 1.应用软件的非操作系统提供的资源的获得
目前主流的软件都是以安装包的形式发布,即用户得到软件后需要先进行安装才能使用。 在此安装过程中,由安装程序在系统的文件系统上创建应用软件的安装目录、拷贝文件到安 装目录或者其他系统目录;通常还会在系统注册表中添加相关项;也有可能创建某些环境变量(这通常也是通过修改系统注册表实现的)。在这一过程中创建的文件、目录、环境变量、 系统注册表项被称为非操作系统提供的资源(或者"应用自有"的资源)。软件必须依赖这些 资源才能够正常运行。
综上所述,这些资源可以分为文件系统相关与系统注册表相关两大类,前者包括文件与 目录的创建,后者包括注册表与环境变量的创建。因此,以下从这两个方面来叙述如何获得 这些安装时创建的资源。 1)文件系统相关的资源的获得
安装时安装程序会对文件系统进行修改,因此监视并记录这些修改即可。我们采用了自 由软件FileMon (ww...micros()ft. com/1echnet/sysinterr.迈1 s/ FileAndDisk/Filemon. mspx) 来获得这些完整信息,FileMon将所有与文件系统相关的操作(如读取、修改、出错信息等) 全部记录下来,并允许用户对记录的信息进行保存、过滤、查找等处理。
以微软的OFFICE 2003软件中的Word为例,我们给出如何获得其文件系统相关的非操作 系统提供的资源的示例。
首先启动FileMon,设定其"filter"的关键字为"set叩.exe"、 "msiexec.exe"、 "msohtmed.exe"、 "OSE. EXE",这几个程序是Word的安装程序,由它们生成文件系统相关的 资源,因此需要监视并记录它们的操作,同时只记录"write"且成功的操作。
然后启动Word安装,这个过程与通常的安装一样,直至完成。这一过程中FileMon在同
时运行并记录文件系统操作,并将这些记录存于文件中。下面给出了记录的一个片断,可以
看出其完成的记录了安装程序所执行的文件创建、写入、目录创建等操作。
H朋颜'e潔.exe..鄉柳/T^ 。 i尸,層 v^H必'c旭。/Y
M7ZS^ Z卿"朋
舰'e恶e义e,鄉野7F C/Ygife"必7傲由5"虹縱 ,7忍Ze/^力2
比如"20:34:44 msiexec. exe:932 WRITE C:\Config. Msi\40758. rbs SUCCESS Offset: 331782 Length: 2"表示在"c: \Config. Msi\40758. rbs"中写入数据;而"20:33:39 msiexec. exe:932 WRITE C:\Program Files\Microsoft Office\OFFICEll\MULTIQ.DLL SUCCESS Offset: 0 Length: 32768 " 表示写入"C:\Program Files\Microsoft 0ffice\0FFICEll\MULTIQ. DLL"。
然后,对这记录进行处理,归纳出该过程中创建的目录、文件的完整信息(先创建而后 又删除的除外),即文件/目录的名字及其完整路径。接着,将这些目录、文件完整的拷贝到 移动存储设备上,并保持其目录层次关系——即如果某个文件是C:\Program Files\MicrosoftOffice\OFFICEll\winword.exe,而移动存储设备的盘符是"Z",则将其拷贝到Z:\Program Files\Microsoft Office\OFFICEllVf (路径不存在的话要先创建);类似 的,某一文件为C:\Program Files\Common Files\Microsoft Shared\OFFICEll\MSOXEV. DLL, 则先创建Z: \ProgramFiles\CoramonFiles\Microsoft Shared\OFFICEll目录,再拷贝过去。
至此,我们可以完整地获得安装过程所创建的文件系统资源,并将其分离出来。 2)注册表相关的资源的获得
我们采用 了 自 由软件 RegMon ( http://'www, microsoft, com/tec.hnet/ sysinternals/utilities/regmon. mspx)来获得这些完整信息,RegMon将所有与系统注册表 相关的操作(如读取、修改、出错信息等)全部记录下来,并允许用户对记录的信息进行保存、 过滤、査找等处理。
还是以word安装为例。首先启动RegMon,设定其"filter"的关键字为"setup.exe"、 "rasiexec.exe"、 "msohtmed.exe"、 "OSE.EXE",这几个程序是Word的安装程序,由它们生 成注册表相关的资源,因此需要监视并记录这些操作。同时只记录修改且成功的操作。
然后启动Word安装,这个过程与通常的安装一样,直至完成。这一过程中RegMon在同 时运行并记录系统注册表操作,并将这些记录存于文件中。下面给出了记录的一个片断,可 以看出其完成的记录了安装程序所执行的注册表项创建、写入、删除等操作。
服il5"。^T厨,yc愿of,/yyce |/^.離/15"離^卿'朋i"麵Jo油5Z/07股 爿ccew 舰服.淑& t睦e
MZJ/15"(F7F^ £ li/icroso/t 16¥YYce l"e乃'Ker/15b"/ra& gj'朋1"0 7^做^/ 1卯^ 做似-卵W-i7" 舰狐.鄉5"e t睦e
yyAZi/16WT粉^"l必'cr。5Y /"^f/yce 1Zte力'Ke7y 15b"/re^7^7'/7e 1Z o柳2朋tfe 1卯W做似—抑tt 一?7Z
如"0SE.EXE:568 CreateKey HKLM\SOFTWARE\Microsoft\Office\Delivery\
SourceEngine\Downloads SUCCESS Access: 0x2001F "记录ose. exe创建注册表键 (CreateKey)"HKLM\S0FTWARE\Microsoft\0ffice\Delivery\SourceEngine\Downloads,,,以 及创建时的 Access 参数 "0x2001F " ; " OSE. EXE :568 SetValue HKLM\S0FTWARE\Microsoft\0ffice\Delivery\SourceEngine\Downloads\90000804-6000-11D 3-8CFE-0150048383C9\Type SUCCESS 0x2"则记录了在注册表键中填值(SetValue)的操作。 然后对该记录进行处理,完整的遴选出创建(CreateKey) /填值(SetValue)/删除 (DeleteKey/DeleteValue)操作(先创建后删除的则排除掉),并以文本文件格式存储在移动 存储设备上。示例如下
7砂?W<formula>formula see original document page 9</formula>
其存储了路径是"ABC\DEF\GHI"的注册表键,其有两个键值,名字分别为123与789, 两个的值分别为456与012,图中的1167875994是该键的创建时间或者最后修改时间;另存 储了路径是"ABC\DEF\JKL"的注册表键,其有两个键值,名字分别为456与012,两个的值 分别为123与789,图中的1167876004是该键的创建时间或者最后修改时间。其他的也可以 依次类推进行存储。
至此,我们通过一个典型应用示例介绍了 Windows下通过监测应用的安装过程来获得其 文件系统相关资源与注册表相关资源的方法,并将这些资源以一定格式存储在移动存储设备 上。
2.运行中资源相关的系统调用的截获与处理
将应用软件相关的非操作系统提供的资源存于移动存储设备上之后,面临的一个问题是 如何在启动应用程序后让其能够正常的(如同安装在硬盘上一样)访问这些资源。
首先还是从一般软件的安装过程说起。安装过程一般完成这些事情
1) 创建安装目录以及其他所需的目录(一般都位于安装目录下),还有些文件会拷贝到 Windows操作系统预设的目录下,包括由环境变量指定的ProgramFiles、 SystemRoot、 windir、 APPDATA、 CommonProgramFiles等。同时安装目录会被安装程序写入系统注册表, 以便软件运行时找到该目录。
2) 保存应用相关的运行所需配置,包括l)中所述的安装目录等。这些信息保存在系统注册 表中。
自然的,运行时必须使得程序能够正常地获取这些资源。如果是正常安装在系统上,则可 以直接使用系统的注册表与环境变量相关的API来获得这些资源,但在我们的发明中这些注 册表相关的信息(windows下环境变量也是保存在注册表里的)被以文本形式保存在移动存 储设备上,如何在不改变应用源代码的前提下访问这些信息是关键问题。
我们采用系统调用包裹技术来实现。这一技术的实质就是在用户用到的系统调用与实际实 现的功能之间插入代码,以便截获用户程序的调用参数等信息,然后在这些代码中进行处理。
我们采用了透明的代码插入技术,有两种方式
1) 是在应用程序的执行文件中插入代码,通过重写所要包裹的系统调用在执行文件中的入口 来实现。这样一旦应用程序使用此调用,就会先进入插入的代码,由后者进行适当的处理 后再调用真正的系统调用或直接返回。
2) 是将应用程序装载入内存后再进行函数包裹,直接在内存中改写相关函数的映像(Image),这样可以不改变执行文件的大小,而效果与前者是一样的。
这种技术能在用户无需修改源代码,无需重新编译连接,及不替换任何动态连接库的前提 下实现所需的功能。目前在我们的参考实现中使用的是第一种方式。以下叙述其实现的关键 细节。
图3显示了 Windows下执行文件的组成,包括文件头,PE头,正文段包括程序代码,数 据段包括初始化数据、所用到的动态连接库与系统调用的输入链表,输出(Exported)函数 表与调试符号。
为修改Windows执行代码,我们在其执行文件的调试符号与输出函数表之间创建了一个 新的段——含有原先的PE头的拷贝与一个新的函数输入表,同时修改了原先的PE头使之指 向新的输入表,最后是我们插入的代码。如图4。
插入新的输入表有两个目的首先它保留了原先的输入表以便在需要时将修改过的执行文 件改回去。其次,新的输入表可以包括新的动态连接库用以完成所需的额外功能。这样当目 标应用程序使用系统调用时,实际上査询的是我们插入的新的函数输入表,从而调用了我们 的插入代码,后者对原有调用函数进行了包裹,以便在必要时在调用原来的系统调用函数。
利用这种方式我们包裹了与系统注册表、环境变量相关的系统调用,包括:
系统注册表相关——
RegCloseKey
RegCreateKeyEx
RegDeleteKey
RegDeleteValue
RegEnumKeyEx
RegEnumValue
RegFlushKey
RegLoadKey
RegOpenCurrentUser
RegOpenKeyEx
RegOpen[JserClassesRoot
RegQuerylnfoKey
RegQueryMultipleValues
RegQueryValueExRegRestoreKey RegSaveKey RegSetValueEx RegUnLoadKey
环境变量相关——
GetEnvironmentStrings GetEnvironmentVariable SetEnvironmentVariable FreeEnvironmentStrings
针对这些调用,我们的插入代码的总体流程是一致的,艮P:
1) 首先判断所访问的资源是否是存在移动存储设备上的应用自有的资源,如是,则转3 ); 如不是,则转2);
2) 判断是否是一个修改操作(包括写入、创建、删除等),如是,则转4 );否则,转5 );
3) 根据传入的调用参数,针对存储于移动存储设备上的资源进行访问(包括读取或者修 改)操作,转6 );
4) 根据传入的调用参数,将此修改操作所涉及的资源记录在移动存储设备上,转6);
5) 调用默认的系统调用进行操作,转6);
6) 插入代码的此次执行结束。
以下以几个主要函数RegCreateKeyEx、 RegDeleteKey、 RegSetValue、 RegDeleteValue、 RegQueryValueEx 、 RegEnumKeyEx 、 RegEn咖Value 、 GetEnviro咖entVaxiable 、 SetEnvironmentVariable为例进行说明。
RegCreateKeyEx-
因为该调用是创建一个键,属于改变注册表操作,因此由我们的插入代码处理,即在移动 存储设备上存储该新建的键值。假设创建的键的全路径名为"ABC\XYZ\123",则在"应用软 件的非操作系统提供的资源的获得"中的"注册表相关的资源的获得"一节中所述的存储注 册表信息的文本文件(以下简称为注册表信息文本文件)中填入"[ABC\XYZ\123]" —项。
RegDeleteKey-
删除一个键,也属于改变操作,由我们的插入代码处理。假设删除全路径名为 "ABC\XYZ\123"的键,即在注册表信息文本文件中删除"[ABC\XYZ\123]"项。 RegSetValueEx-
设置某个键的值,属于改变注册表操作,由我们的插入代码处理。比方说在"AB(AXYZU23"下设置DEF为456,则在注册表信息文本文件中的"[ABC\XYZ\123]"项下插入"DEF=456"。 RegDeleteValue-
删除某个键值,属于改变注册表操作,由我们的插入代码处理。比方说在"ABC\XYZ\123" 下删除DEF键,则在注册表信息文本文件中的"[ABC\XYZ\123]"项下删除"DEF=456"。 RegQueryValueEx-
获得某个键值。首先由我们的插入代码查询该键值是否存在于移动存储设备上(即搜索注 册表信息文本文件),如是(假设要获得"ABC\XYZ\123"下的DEF键值),则直接返回456; 否则交由系统的默认调用处理并返回(即査询系统默认的注册表)。
RegEn咖KeyEx-
获得某个键下的所有子键。首先由我们的插入代码査询该键值是否存在于移动存储上(即 搜索注册表信息文本文件),如是,则返回该键下的所有子键——假设要获得"ABC\DEF"下 的子键,则返回"GHI"、 "JKL"的信息;
否则交由系统的默认调用处理并返回(即査询系统默认的注册表)。
RegEnumValue-
获得某个键下的所有键值。首先由我们的插入代码査询该键值是否存在于移动存储上(即 搜索注册表信息文本文件),如是,则返回该键下的所有键值——假设要获得"ABQDEFViHI" 下的所有键值,则返回"123=456"、 "789=012"信息。
GetEnvironmentVariable-
获得某一环境变量。首先插入代码查询该环境变量是否存在于移动存储上(windows系统 下环境变量也存于注册表内),如是,则从注册表信息文本文件中读出该变量并返回;否则交 由系统的默认调用处理并返回。
SetEnvironmentVariable-
设置某一环境变量,则由插入代码在注册表信息文本文件中保存此变量信息。
如果是采用网络服务器来存储非操作系统提供的资源,则可搭建一台Samba网络服务器。 Samba是一个开源的Windows Common Internet File System的实现,可以安装在Linux系 统上,而作为一个Windows文件服务器。这样,windows个人计算机使用者就可以将Samba 服务器上的存储空间加载为本地的一个盘符,然后可以对此盘进行正常的文件系统操作,如 同使用一个本地硬盘或者移动硬盘一样。而"应用软件的非操作系统提供的资源的获得"与 "运行中资源相关的系统调用的截获与处理"中的其他细节的实现则与使用移动存储设备一 样。
权利要求
1.基于系统调用包裹技术的可迁移软件使用模式,其特征在于它在移动存储设备或网络服务器上保存应用软件运行时所需的所有非操作系统提供的资源,在未安装该应用软件的视窗(Windows)个人计算机上,由采用了系统调用包裹技术的应用启动程序或动态链接库截获该应用软件运行时对于这些资源的访问并重定向到该移动存储设备或网络服务器上,并将该应用软件运行过程中对所有资源的修改存储在该移动存储设备或网络服务器上。
2. 根据权利要求1所述的基于系统调用包裹技术的可迁移软件使用模式中的应用软件 运行时所需的所有非操作系统提供的资源,其特征在于它可以通过监测应用软件的安装过程对于操作系统的文件系统、系统注册表等的修改来 获得,包括新安装的文件、创建的目录、创建或更改的系统注册表项和环境变量。
3. 根据权利要求1所述的基于系统调用包裹技术的可迁移软件使用模式中的应用启动 程序或动态链接库,其特征在于-它预先保存于个人计算机之上、或者预先保存于移动存储设备或网络服务器上,由该应 用启动程序启动应用软件或者由该动态链接库伴随应用软件一起运行,通过系统调用包裹技 术在应用软件的资源访问相关的系统调用与默认的系统调用代码间插入代码,由该插入代码 进行资源访问处理,并将结果返回给应用软件。
全文摘要
基于系统调用包裹技术的可迁移软件使用模式属于计算机软件领域,该发明可以使得使用者在运行视窗(Windows)操作系统的任意个人计算机上,利用移动存储设备或网络服务器随时使用带有其个性化配置的应用软件,而不需要安装这些(个)软件。此项发明是一种将应用软件运行时所需的非操作系统提供的所有资源,包括文件、目录、系统注册表、环境变量,存储在移动存储设备或网络服务器上,并在运行时通过系统调用包裹技术截获对于这些资源的访问并重定向到移动存储设备或网络服务器上而实现的软件使用模式。它兼容已有的视窗应用软件,不需要修改其源代码。
文档编号G06F9/46GK101290584SQ200710065568
公开日2008年10月22日 申请日期2007年4月17日 优先权日2007年4月17日
发明者卢玉英 申请人:焦秀琴
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1