CN102203731B - 用于操作***的灵活层级设置注册表 - Google Patents
用于操作***的灵活层级设置注册表 Download PDFInfo
- Publication number
- CN102203731B CN102203731B CN200980143460.7A CN200980143460A CN102203731B CN 102203731 B CN102203731 B CN 102203731B CN 200980143460 A CN200980143460 A CN 200980143460A CN 102203731 B CN102203731 B CN 102203731B
- Authority
- CN
- China
- Prior art keywords
- data
- primary
- protogenous
- registration table
- arrange
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- 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
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
各种实施例包含提供具有可由应用程序开发人员定义的存取保护的分布式设置注册表的方法和***。可用可定制特权和将不同节点***到注册表树中的动态能力来跨不同技术实施分布式设置注册表。所述设置注册表可存在于注册表接口下,使得调用注册表的应用程序无需考虑设置数据是何时或者如何存储的。所述注册表树中的每一节点可定义其自身的特权要求和存储技术。节点可为“原生的”(即,在设置注册表***软件内得到完全支持)或“非原生的”(即,由开发人员针对特定应用程序而定义)。
Description
相关申请案
本申请案主张2008年10月29日申请的标题为“用于操作***的灵活层级设置注册表(″Flexible Hierarchical Settings Registry for Operating Systems″)”的第61/109,380号美国临时专利申请案的优先权权益,所述申请案的全部内容以引用的方式并入到本文中。
技术领域
本发明大体上涉及计算机操作***,且更明确地说,涉及在用于移动计算装置的操作***上实施的注册表***。
背景技术
注册表是操作***内用于存储软件操作设置和选项的目录。举例来说,由微软公司(Microsoft Corporation)开发的操作***包含被称为“Windows注册表”的目录文件,所述目录文件含有硬件、操作***软件和应用程序软件所需要的信息和设置,并存储用户偏好和设置。注册表文件用于在单个文件结构中定位所有程序和硬件设置和常量值。
Windows注册表含有两个基本元素:机码和值。注册表机码类似于文件夹。除了值之外,每一机码可含有子机码,子机码可含有进一步的子机码。在类似于Windows路径名的语法中使用反斜杠指示层级等级来引用机码。注册表值是存储在机码内的名称/数据对。对值的引用是独立于机码而进行的。在Windows注册表中,值可为串值、二进制数据、未签名的32位整数、统一代码(UNICODE)值、多串值、列表和64位整数值(在Windows 2000和更高版本中)。Windows注册表被构造成提供数据库类型的函数的数据库。
发明内容
本发明的一方面涉及一种用于在注册表内对软件设置进行存储和存取的方法,其包括:产生含有设置值的原生设置对象,并用机码将所述原生设置对象存储在存储器中;接收来自应用程序的呈应用程序编程接口(API)调用形式的对所述设置值的调用;实施与所述注册表相关联的单独服务以获得所述设置值;在所述单独服务内从所述原生设置对象获得所述设置值;将所述设置值从所述单独服务返回到所述API;以及将所述设置值从所述API返回到所述应用程序。
本发明的另一方面涉及一种移动装置,其包括:处理器;存储器,其耦合到所述处理器;其中所述处理器用处理器可执行指令来配置以执行包括以下各项的步骤:产生含有设置值的原生设置对象,并用机码将所述原生设置对象存储在存储器中;接收来自应用程序的呈应用程序编程接口(API)调用形式的对所述设置值的调用;实施与所述注册表相关联的单独服务以获得所述设置值;在所述单独服务内从所述原生设置对象获得所述设置值;将所述设置值从所述单独服务返回到所述API;以及将所述设置值从所述API返回到所述应用程序。
本发明的另一方面涉及一种有形存储媒体,其上存储有致使计算装置的处理器执行包括以下各项的步骤的处理器可执行软件指令:产生含有设置值的原生设置对象,并用机码将所述原生设置对象存储在存储器中;接收来自应用程序的呈应用程序编程接口(API)调用形式的对所述设置值的调用;实施与所述注册表相关联的单独服务以获得所述设置值;在所述单独服务内从所述原生设置对象获得所述设置值;将所述设置值从所述单独服务返回到所述API;以及将所述设置值从所述API返回到所述应用程序。
本发明的另一方面涉及一种移动装置,其包括:用于产生含有设置值的原生设置对象并用机码将所述原生设置对象存储在存储器中的装置;用于接收来自应用程序的呈应用程序编程接口(API)调用形式的对所述设置值的调用的装置;用于实施与所述注册表相关联的单独服务以获得所述设置值的装置;用于在所述单独服务内从所述原生设置对象获得所述设置值的装置;用于将所述设置值从所述单独服务返回到所述API的装置;以及用于将所述设置值从所述API返回到所述应用程序的装置。
附图说明
并入本文中并构成本说明书的一部分的附图说明本发明的示范性实施例,且连同上文所给出的概括描述和下文所给出的详细描述一起用以阐释本发明的特征。
图1提供用于在实施例内实施设置对象的实例代码框。
图2提供用于在实施例内实施原生设置对象的其它实例代码框。
图3是说明两个应用程序针对原生设置对象的过程调用的过程调用图。
图4提供用于在实施例内实施非原生设置对象的实例代码框。
图5是说明两个应用程序针对非原生设置对象的过程调用的过程调用图。
图6是说明在实施例内对设置对象调用进行的处理的过程流程图。
图7是适于实施各种实施例的移动手持机的组成框图。
具体实施方式
将参看附图来详细地描述各种实施例。只要有可能,将在所有图式中使用相同的参考标号来指代相同或相似的部分。对具体实例和实施方案做出的参考是出于说明性目的,且不希望限制本发明或权利要求书的范围。
在此描述中,术语“实例”和“示范性”是用于指“充当实例、例子或说明”。在本文中描述为“实例”或“示范性”的任何实施方案不一定解释为比其它实施方案优选或有利。
如本文所使用,术语“移动手持机”和“移动装置”可互换使用,且指代以下各项中的任一者:各种蜂窝式电话、个人数据助理(PDA)、掌上型计算机、具有无线调制解调器的膝上型计算机、无线电子邮件接收器(例如,和装置)、蜂窝式电话以及具有多媒体因特网功能的蜂窝式电话(例如,Blackberry)以及类似的个人电子装置。移动装置可包含如下文参看图7更完全地描述的可编程处理器和存储器。
现代移动装置可存储大量的数字信息,且用户通常将其移动装置用作信息和娱乐器具。因此,针对移动装置而开发的应用程序的复杂性和完善度现在可与针对个人计算机而开发的应用程序匹敌。各种实施例通过提供具有可定义存取保护的灵活设置注册表来促进移动装置应用程序的开发。
各种实施例提供一种具有可由应用程序开发人员定义的存取保护的分布式设置注册表。分布式设置注册表在不同技术中提供可定制特权和将不同节点***到注册表树中的动态能力。所述设置注册表可存在于注册表接口下,使得调用注册表的应用程序无需考虑设置值是何时或者如何存储的。在所述注册表树中的每一节点可定义其自身的特权要求和存储技术。节点可为“原生的”(即,在设置注册表***软件内得到完全支持)或“非原生的”(即,由开发人员针对特定应用程序而定义)。设置对象经由模块信息文件(mif)而向设置注册表注册其自身,所述模块信息文件在本文被称为.mif文件。
众所周知,可由以下两个文件来定义驻留在移动装置上的应用程序:扩展名为.mif的模块信息文件和扩展名为.mod的模块文件。如果应用程序需要设置信息,那么此类设置值便可存储在设置注册表内,以供应用程序在其开始或正在运行时存取。举例来说,可将设置存储在扩展名为.ini文件的初始化文件中。在此实施方案中,开发人员必须提供含有已编译应用程序代码的.mod文件、含有已编译模块信息(包含设置注册信息)的.mif文件和含有设置值的.ini文件。
各种实施例提供应用程序编程接口(API)(有时在本文被称为“ISettings”)和API的设置注册表实施方案(有时在本文被称为“SettingsReg”),其使得能够以串值获得/设置指定的机码、支持层级机码结构、允许在机码的树上进行列举以及在值变化时支持通知。可将数据作为文本文件而存储在设置注册表中,这简化了读取、写入和列举操作。SettingsReg的实施例提供两种类型的功能性:公用设置和私用设置。公用设置是应用程序或组件希望能够经由全局设置注册表而可供***的其余部分使用的设置文件。公用设置大体上可供在操作***内运行的所有应用程序使用。私用设置是可供选择性识别的应用程序或应用程序类型或类别使用的设置文件。
各种实施例的设置注册表利用基于URI的设置树,例如,“path/to/a/setting”(/路径/到/一/设置)。各种实施例的设置注册表不是较大的单片注册表(例如,在Windows注册表的情况下),而是包括若干较小的子注册表,由简单地“***”到最高等级的注册表的任何数目的模块提供所述子注册表,其中每一子注册表“拥有”树的特定部分。此结构使得能够易于维持设置注册表,因为每一子注册表以可定制方式管理其自身的数据存储装置(data store)。所述结构还允许各种类型的数据存储机构可缩放,这是因为易于添加新的子注册表。所述结构还提供可定义的安全性,因为每一子注册表可管理其自身的特权准则。另外,所述结构支持跨应用程序/域的变化通知。
设置注册表具有原生和非原生数据存储装置的概念。原生存储装置是ISetings注册表对其具有内建支持的存储装置。举例来说,在实施例中,设置注册表支持基于.ini文件的数据存储装置和基于堆的数据存储装置,所述基于.ini文件的数据存储装置是存在于.ini文件中且留存在扩展文件***(EFS)中的设置,所述基于堆的数据存储装置是存在于堆存储器中且不跨电源(即,***接通/断开)循环留存的设置。非原生存储装置是使用不同于由原生设置对象数据存储装置所支持的存储技术或文件类型的存储技术或文件类型的独立实施方案。开发人员可自由定义非原生设置对象,包含那些对象的特权执行。
在原生存储装置的情况下,若干组件在其.mif文件中主张对树的特定节点的所有权,其还在所述.mif文件中向注册表提供关于其存储装置的一些信息(例如,对于基于.ini文件的存储装置,组件将指定存储装置类型(在此情况下是基于.ini的存储装置)和到.ini文件的EFS路径)。注册表将管理对数据存储装置的所有操作(在.ini文件的情况下,注册表是曾对文件进行读取/写入的唯一组件),因此存在例如设置存取控制列表(ACL)等单独的机构,组件可通过所述机构定义特权,以允许或拒绝对其存储装置的存取。设置ACL(存取控制列表)与文件***(FS)ACL的运作完全相同。
在原生存储装置的情况下,没有用以写入以定义/管理存储装置的代码。在原生存储装置中,注册表过程具有创建存储装置并与其交互的能力。开发人员可简单地在.mif文件中对存储装置进行注册,并提供存储媒体(例如,.ini文件)。换句话说,模块经由.mif文件而向设置注册表“注册”其自身。于是使用所述存储装置的应用程序可使用ISettings接口和已定义的机码一起对数据进行存取(假定应用程序具有这样做的特权)。接着由单独服务18执行对个别原生设置对象的所有存取(参看图3)。换句话说,对所有原生设置对象20进行存取的同一服务在一过程中由同一服务进行存取,所述过程由来自经调用以获得信息的应用程序10、14和API 12、16的过程边界分离。
设置数据作为设置对象而存储。可使用产生API的对象(在本文被称为设置存储装置工厂)围绕具体存储技术来创建原生设置注册表对象。举例来说,在第一实施例中提供两个设置存储装置工厂:用于产生.ini文件设置对象的设置存储装置工厂和用于产生堆存储设置对象的设置存储装置工厂。众所周知,.ini文件是应用程序用来存储配置数据的初始化文件,所述配置数据在程序正在开始时被读取,且堆存储装置是存储在临时存储器中的文件,只要移动装置一断电,所述文件就被删除。
当待存储的信息将被给定受限制的存取(即,“私用的”)时尤其可使用设置存储装置工厂,其中存取限于指定的应用程序或应用程序类型或系列。如本文所使用,术语“公用的”指在设置注册表中可用的任何设置不考虑存取特权都被认为是公用的,且术语“私用的”指在应用程序中使用工厂创建的设置或对象。在这点上,“私用的”设置指在单个应用程序的上下文中创建的对象的例子,于是所述对象对于所述应用程序便是“私用的”例子。因此,如果两个应用程序两者都使用设置.ini工厂打开同一.ini文件,那么每一应用程序现在便具有所述对象的私用例子(在此情况下,对文件具有存取权的应用程序可由不同于设置注册表的某一机构(例如,文件***ACL)定义)。当一个应用程序作出改变时,可能无法通知其它应用程序已发生了改变。另一方面,如果向设置注册表注册了所述.ini文件(这使其变得“公用”),那么两个应用程序便可通过检查设置注册表来对所述.ini文件中的数据进行存取,且当一个应用程序作出改变时,另一应用程序可得到通知。因此,可存在三个类别的设置对象:公用,对全体可用;公用,其中存取受限制;以及私用。
图1说明可用于针对程序“foo”实施.ini文件的实例代码的样品。在此实例中,待存储在所述树处的foo.ini和文件fs:/~0xdeadbeef/foo.ini中的信息是待存储在“名称”节点中的名称“Mike”(参见代码2)。代码框4中说明用以实施用于产生此foo.ini设置文件的设置存储装置工厂的脚本。在以“ISettingsStoreFactory_Create”开头的行中,开发人员指定待使用的节点名称(在所述实例中是“foo.ini”)。
与上文所论述的内容一样,在原生设置对象的产生期间,开发人员还可指明对象是私用还是公用的。如果开发人员指明对象为私用的,那么开发人员还可指明对象的存取特权,即,可对设置对象进行存取的特定应用程序或应用程序类型。在图2中所说明的实例代码中,代码行“ISettings_Get(pSettings,′Genera/name′,buf,sizeof(buf),NULL)”将返回存储在节点“名称”处的foo.ini文件中的数据(其在此实例中是“Mike”)。此类.ini文件可能受FS ACL的控制,FS ACL是设置对象中以应用程序列表的形式所指定的特权,注册表***可允许所述应用程序列表对设置值进行存取。可在设置对象内指定特权,使得对象内的一些设置值是公用的(即,可由任何应用程序进行存取)而同一对象内的其它设置值是私用的,且仅可由对应的ACL中所识别的应用程序或应用程序类型进行存取。
已使用图1中所展示的脚本产生原生节点设置对象,开发人员便可通过实施图2中.cif文件框6中所展示的脚本来向设置注册表注册对象2。所述.cif文件经编译以产生用于应用程序的.mif文件。因此,框6中的代码定义将存在于用于应用程序“fooApp”的.mif文件中的信息,所述信息定义将保存包含“名称”节点中的词“Mike”的初始化设置的设置对象“foo.ini”。***可列举存储在移动装置上的.mif文件,以确定设置文件的机码。明确地说,.mif文件(由.cif文件6中的代码定义)需要定义所有者、机码和文件(参看框6中第三行到第五行)。一旦注册了对象,便可由应用程序通过实施图2中的框8中所展示的脚本来对信息进行存取。
如上文所提及和图3中所说明,设置注册表实施单独服务18,用于对所有原生设置对象20进行存取。这使得能够在应用程序10、14和注册表12、16(虚线上方)的处理与对设置对象20进行的存取之间建立过程边界(以虚线说明)。由应用程序10、14调用的原生设置存取API 12、16无需指定文件位置或包含与用设置对象实施的文件结构相关的详细说明;此类细节由单独服务18处置。
非原生存储装置是注册表对其没有原生支持的数据存储机构(即,没有提供设置工厂且单独服务18未经配置以对设置对象文件类型进行存取)。设置注册表的各种实施例允许非原生存储装置将其自身安装到树中,并处置在所述树内的节点上所发生的操作。依据非原生存储装置实施方案,可在过程中或跨过程边界执行存储装置上的操作。
与原生存储装置一样,非原生存储装置在其.mif文件中进行注册以“拥有”树的特定节点。不同的是,非原生存储装置为定制ISettings类提供类ID。在非原生存储装置的情况下,调用程序(caller)首先例示注册表类。当在由非原生存储装置所拥有的树中的机码上进行操作时,例示定制类(假定调用程序具有适当的特权),且所述操作被委派给所述定制类。在此情况下,注册表基本上作为“直通”(pass-through)而操作。在技术上,调用程序可通过直接例示定制类而非注册表来得到相同的功能性,但使用注册表简化了用法,尤其是在调用程序对原生和非原生存储装置两者都感兴趣时更是如此。
开发人员可通过实施例如图4中说明的实例等脚本来针对非原生“BMPSettings”注册非原生节点。可在例如框22中的代码中所说明的.cif文件中来定义非原生设置对象。可通过将例如框24中所说明的代码包含在内来实施对已定义的非原生设置对象的处理。在例示之后,实施例中的注册表过程(例如,SettingsReg)即刻在***中建立已注册的非原生节点的列表。一旦定义和实施非原生设置对象,便可接着在应用程序内通过将类似于框26中所说明的代码的代码包含在内来对非原生设置对象进行存取。在对非原生代码的存取调用后,即刻创建了实施方案,且将操作委派给所述实施方案。
由于非原生设置对象由开发人员定义,且因此不能由设置注册表进行处置,所以依据非原生存储装置实施方案,可在过程中或跨过程边界处置其存取调用。这在图5中加以说明。当任一应用程序30、38调用设置API 32、40以获得非原生设置对象36、42(例如,BMPSettings)时,API实施非原生对象存取代码36、42以获得过程中所请求的信息(即,在同一过程边界内,无需实施注册表的单独服务18)。以此方式,开发人员具有以特定应用程序所要的任何方式和文件类型来定义新的设置对象的完全自由。
在图6中说明在各种实施例下应用程序请求设置信息的处理。在初始化期间(或任何其它时间),应用程序可通过在设置注册表上经由ISettings API执行操作来请求设置信息(步骤60)。举例来说,如图3和图5中所说明,应用程序可经由如图2代码框8和图4代码框26中所说明的ISettings API对“SettingsReg”进行存取。SettingsReg确定所请求的设置对象是针对原生还是非原生节点(测试62)。如果请求是针对原生节点处的信息(即,测试62=“是”),那么SettingsReg便将操作传递到单独服务(步骤64),所述单独服务对所指示的设置对象进行存取并将数据返回到SettingsReg(步骤66)。在实施例中,单独服务可比较在所调用的设置对象中指定的存取特权,以确定调用应用程序是否经授权对设置信息进行存取(测试65)。如果调用应用程序不满足设置对象特权列表(即,应用程序或应用程序类型不匹配设置对象中指定的特权,且因此测试65=“否”),那么单独服务便可将“存取被拒绝”或类似的消息返回到调用程序(步骤67)。如果调用应用程序满足设置对象特权列表(即,测试65=“是”),那么SettingsReg便接着将所请求的数据返回到所述应用程序(步骤68)。然而,如果请求是针对非原生节点处的信息(即,测试62=“否”),那么SettingsReg便为过程中所调用的非原生节点创建设置对象,所调用的非原生节点返回所请求的数据(步骤72)。SettingsReg接着将所请求的数据返回到所述应用程序(步骤74)。
开发人员可使用各种实施例来简化对应用程序的开发。以下段落描述开发人员在用以实施设置注册表的各种实施例的应用程序中可包含的步骤和实例代码。
为了区别位于注册表根等级处的子注册表,每一子注册表必须具有唯一的串识别符。实现这的此最简单的方式是(例如)要求类ID。
“/~0x12345678/foo/...”<---组件1的设置子注册表
“/~0xdeadbeef/bar/...”<---组件2的设置子注册表
然而,类ID不是必需的;还允许更多的人类可读统一资源识别符(URI),但必须注意避免重叠。如果发生重叠,那么行为可能是未定义的。
“/component1/foo/...”
“/component2/bar/...”
私用设置是在每个例子的基础上可供一应用程序或组件使用的设置。这些设置不暴露于***中的任何其它组件。对于私用设置的ISettings支持仅提供用于组织设置的便利机制。
私用设置是使用工厂创建的。调用程序指定关于媒体(将从所述媒体创建设置)的一些信息,且工厂返回可用于对设置进行存取的ISettings对象。
对于私用设置,无需对.mif文件进行修改。组件在运行时间仅使用工厂来创建感兴趣的ISettings对象。
在实施例中,设置注册表包含返回不支持ISettings_OnChange()方法的ISettings对象的工厂。
为了添加公用.ini文件的公用存储装置,开发人员可执行以下步骤来向其组件添加和存取基于公用.ini文件的设置存储装置。第一,开发人员可将以下内容复制到名为mysettings.ini的文件中,并将其放置到其组件的位于EFS中的模块目录中:
[部分1]
设置l=值
第二,开发人员可通过使用例如以下的脚本将以下各项添加到组件的.cif文件来向***注册存储装置:
第三,开发人员可任选地定义ACL以允许其它应用程序对设置进行存取:
第四,开发人员可在应用程序内使用以下代码来对设置进行存取:
开发人员采取的向组件添加并存取公用的基于堆的设置存储装置的步骤十分类似于基于.ini文件的存储装置。主要差异是不存在.ini文件。相反,基于堆的设置需要确定存储装置可使用的堆的最大数量的配额值(quota value)。第一,开发人员可通过将以下各项添加到组件的.cif文件来向***注册存储装置:
开发人员可任选地如下定义ACL以允许其它应用程序对其设置进行存取:
第三,开发人员可在应用程序内使用以下代码来对设置进行存取。请注意,直到在基于堆的设置上调用ISettings_Set()才会存在基于堆的设置。
在实施例中,开发人员可通过执行以下步骤以将定制ISettings实施方案添加到设置注册表中来针对公用的应用程序(即,可由所有分配进行存取)定义定制设置:第一,开发人员写入实施所述实施例注册表的组件。第二,开发人员通过将以下各项添加到组件的.cif文件来向***注册所述组件:
接着,开发人员在应用程序中使用以下代码来对设置进行存取。请注意,在注册表类上执行的任何ISettings操作均将被委派给定制类。
在实施例中,开发人员可通过执行以下步骤来针对应用程序定义私用.ini文件设置存储装置(即,仅可由被特别许可对所述文件进行存取的配置进行存取)。第一,开发人员将以下内容复制到名为mysettings.ini的文件中,并将其放置到组件的位于EFS中的模块目录中:
[部分1]
设置l=值1
第二,开发人员将以下代码包含在应用程序中以使应用程序能够对设置进行存取:
请注意,与公用设置不同,对私用存储装置的存取不需要前缀“/myApp/myIniSettings”。
除了未对.ini文件进行引用之外,开发人员采取的在应用程序组件中实施私用的基于堆的设置存储装置的步骤十分类似于基于.ini文件的存储装置。相反,基于堆的设置需要确定存储装置可使用的堆存储装置的最大数量的配额值。开发人员可在应用程序中使用以下代码来对设置进行存取。请注意,直到在基于堆的设置上调用ISettings_Set()才会存在基于堆的设置。
在实施例中,开发人员可通过执行以下步骤来定义私用的定制设置存储装置,以对定制ISettings实施方案进行存取。第一,开发人员写入实施ISettings的组件。第二,开发人员将以下代码包含在应用程序中,以对私用定制设置进行存取。
上文所述的实施例可实施于多种移动装置中的任一者上,例如,蜂窝式电话、具有蜂窝式电话的个人数据助理(PDA)、移动电子邮件接收器、移动网络接入装置,以及可能在未来开发出的其它装备有处理器的装置。另外,上文所描述的实施例可在多种计算装置中的任一者上实施,包含(但不限于)桌上型和膝上型计算机。图7描绘能够支持本文所揭示的各种实施例的移动装置200的各种组件。典型的移动手持机200包含耦合到内部存储器202的处理器201和用户接口显示器203。移动手持机10可包含用于发送和接收电磁辐射的天线204,所述天线204连接到无线数据链路和/或耦合到处理器201的蜂窝式电话收发器205。在一些实施方案中,收发器205以及处理器201和存储器202的用于蜂窝式电话通信的部分被称为空中接口,因为所述组合经由无线数据链路提供数据接口。移动手持机通常包含用于接收用户输入的小键盘206和菜单选择按钮或摇臂开关207。
处理器201可为任何可由软件指令(应用程序)配置以执行多种功能(包含上文所述各种实施例的功能)的可编程微处理器、微型计算机或多处理器芯片。在一些移动装置中,可提供多个处理器201,例如一个处理器专用于无线通信功能,且一个处理器专用于运行其它应用程序。通常,在软件应用程序被存取且加载到处理器201中之前,其可存储在内部存储器202中。在一些移动装置中,处理器201可包含足以存储应用程序软件指令的内部存储器。出于本描述内容的目的,术语“存储器”指可由处理器201存取的所有存储器,包含内部存储器202和处理器201本身内的存储器。存储器202可为易失性或非易失性存储器(例如快闪存储器)或两者的混合体。
用于实施前述实施例的硬件可为经配置以执行指令集的处理元件和存储器元件,其中所述指令集用于执行对应于以上方法的方法步骤。或者,一些步骤或方法可由特定用于给定功能的电路执行。
所属领域的技术人员将了解,可将结合本文中所揭示的实施例而描述的各种说明性逻辑块、模块、电路和算法步骤实施为电子硬件、计算机软件或两者的组合。为清楚说明硬件与软件的此互换性,上文已大致关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。所述功能性是实施为硬件还是软件取决于特定应用和施加于整个***的设计约束。所属领域的技术人员可针对每一特定应用以不同方式来实施所描述的功能性,但此类实施方案决定不应被解释为会导致脱离本发明的范围。
可直接以硬件、以由处理器执行的软件模块或以上述两者的组合来体现结合本文所揭示的实施例而描述的方法或算法的步骤。软件模块可驻留在处理器可读存储媒体和/或处理器可读存储器中,所述两者可为以下各项中的任一者:RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸式磁盘、CD-ROM或此项技术中已知的任何其它有形形式的数据存储媒体。此外,处理器可读存储器可包括一个以上存储器芯片、呈单独存储器芯片形式的位于处理器芯片内部的存储器以及例如快闪存储器和RAM存储器等不同类型的存储器的组合。本文对移动手持机的存储器的参考意在涵盖移动手持机内的任何一个或所有存储器模块,而不限于特定配置、类型或封装。示范性存储媒体耦合到移动手持机或主题服务器中的处理器,使得处理器可从存储媒体读取信息并向存储媒体写入信息。在替代方案中,存储媒体可与处理器成一体式。处理器和存储媒体可驻留在ASIC中。
提供对各种实施例的前述描述以使得所属领域的任何技术人员能够制作或使用本发明。所属领域的技术人员将容易明白对这些实施例的各种修改,且在不脱离本发明的精神或范围的情况下,本文所界定的一般原理可应用于其它实施例。因此,本发明并不意在限于本文所示的实施例,而是应赋予权利要求书与本文中所揭示的原理和新颖特征一致的最广泛范围。
Claims (10)
1.一种用于在注册表内对软件设置进行存储和存取的方法,其包括:
通过产生含有设置值的原生设置对象而创建原生数据存储的原生节点;
使用第一文件类型用机码将所述原生设置对象存储在存储器中,其中所述原生数据存储与所述第一文件类型相关联,并且其中所述第一文件类型为所述注册表支持;
用所述注册表注册所述原生节点;
接收非原生数据存储的非原生节点,其中所述非原生数据存储与不被所述注册表支持的第二文件类型相关联;
使用针对定制注册表类的类识别符用所述注册表注册所述非原生节点;
以应用程序编程接口(API)调用的形式从应用程序接收设置数据的请求;
确定被请求的设置数据在所述原生节点还是在所述非原生节点;以及
响应于确定被请求的设置数据在所述原生节点而实施与所述注册表相关的单独服务以获得所述设置数据,其中
所述单独服务从所述单独服务内的所述原生设置对象获得被请求的设置数据;
所述单独服务将获得的设置数据返回给所述API;以及
获得的设置数据从所述API返回给所述应用程序。
2.根据权利要求1所述的方法,其中单独服务控制对原生设置对象的所有存取。
3.根据权利要求1所述的方法,其进一步包括:
响应于确定所述被请求的设置数据在所述非原生节点而实施非原生过程以获得所述被请求的的设置数据。
4.根据权利要求1所述的方法,其进一步包括:
响应于确定所述被请求的设置数据在所述原生节点而确定所述应用程序是否满足在所述原生设置对象中指定的特权;以及
响应于确定所述应用程序不满足在所述原生设置对象中指定的所述特权时,拒绝对所述设置数据的存取。
5.根据权利要求4所述的方法,其进一步包括:当产生所述原生设置对象时,定义所述特权。
6.一种用于在注册表内对软件设置进行存储和存取的设备,其包括:
用于产生含有设置值的原生设置对象而创建原生数据存储的原生节点的装置;
用于使用第一文件类型用机码将所述原生设置对象存储在存储器中的装置,其中所述原生数据存储与所述第一文件类型相关联,并且其中所述第一文件类型为所述注册表支持;
用于用所述注册表注册所述原生节点的装置;
用于接收非原生数据存储的非原生节点的装置,其中所述非原生数据存储与不被所述注册表支持的第二文件类型相关联;
用于使用针对定制注册表类的类识别符用所述注册表注册所述非原生节点的装置;
用于以应用程序编程接口(API)调用的形式从应用程序接收设置数据的请求的装置;
用于确定被请求的设置数据在所述原生节点还是在所述非原生节点的装置;以及
用于响应于确定被请求的设置数据在所述原生节点而实施与所述注册表相关的单独服务以获得所述设置数据的装置,其中
所述单独服务从所述单独服务内的所述原生设置对象获得被请求的设置数据;
所述单独服务将获得的设置数据返回给所述API;以及
获得的设置数据从所述API返回给所述应用程序。
7.根据权利要求6所述的设备,其中用于实施单独服务的装置包含用于控制对原生设置对象的所有存取的装置。
8.根据权利要求6所述的设备,其进一步包括:
用于响应于确定所述被请求的设置数据在所述非原生节点而实施非原生过程以获得所述被请求的设置数据的装置。
9.根据权利要求6所述的设备,其进一步包括:
用于响应于所述被请求的设置数据在所述原生节点而确定所述应用程序是否满 足在所述原生设置对象中指定的特权的装置;以及
用于响应于确定所述应用程序不满足在所述原生设置对象中指定的所述特权时,拒绝对所述设置数据的存取的装置。
10.根据权利要求9所述的设备,其进一步包括用于在产生所述原生设置对象时定义所述特权的装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10938008P | 2008-10-29 | 2008-10-29 | |
US61/109,380 | 2008-10-29 | ||
US12/551,498 | 2009-08-31 | ||
US12/551,498 US8667512B2 (en) | 2008-10-29 | 2009-08-31 | Flexible hierarchical settings registry for operating systems |
PCT/US2009/062494 WO2010051344A1 (en) | 2008-10-29 | 2009-10-29 | Flexible hierarchical settings registry for operating systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102203731A CN102203731A (zh) | 2011-09-28 |
CN102203731B true CN102203731B (zh) | 2014-04-30 |
Family
ID=41404130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980143460.7A Expired - Fee Related CN102203731B (zh) | 2008-10-29 | 2009-10-29 | 用于操作***的灵活层级设置注册表 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8667512B2 (zh) |
EP (1) | EP2350820A1 (zh) |
JP (1) | JP5518884B2 (zh) |
KR (1) | KR101359126B1 (zh) |
CN (1) | CN102203731B (zh) |
WO (1) | WO2010051344A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8667512B2 (en) * | 2008-10-29 | 2014-03-04 | Qualcomm Incorporated | Flexible hierarchical settings registry for operating systems |
US20110145766A1 (en) * | 2009-12-15 | 2011-06-16 | International Business Machines Corporation | Conveying dense information in an easily consumable format in a visual model |
US20120310882A1 (en) * | 2011-06-03 | 2012-12-06 | Apple Inc. | Key value data storage |
US8881179B2 (en) * | 2011-11-14 | 2014-11-04 | Microsoft Corporation | Cross-platform application programming interfaces for applications |
US10025758B2 (en) * | 2015-04-27 | 2018-07-17 | Microsoft Technology Licensing, Llc | Support for non-native file types in web application environment |
US20220309041A1 (en) * | 2021-03-23 | 2022-09-29 | Microsoft Technology Licensing, Llc | Flexible virtualization of application data for specified system locations |
CN115373595B (zh) * | 2022-07-21 | 2023-09-01 | 华为技术有限公司 | 存储***的访问方法、装置、电子设备以及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903753A (en) * | 1995-08-18 | 1999-05-11 | International Business Machines Corporation | Name space registry with backward compatibility for older applications |
CN1601465A (zh) * | 2003-08-29 | 2005-03-30 | 微软公司 | 动态注册表分区 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6496979B1 (en) * | 1997-10-24 | 2002-12-17 | Microsoft Corporation | System and method for managing application installation for a mobile device |
US6446255B1 (en) * | 1999-03-29 | 2002-09-03 | International Business Machines Corporation | Global registry object for mapping registry functions and registry equivalent functions across multiple operating systems in a cross-platform program |
US6578045B1 (en) * | 1999-04-20 | 2003-06-10 | Microsoft Corporation | System and method for retrieving registry data |
US6347331B1 (en) * | 1999-04-26 | 2002-02-12 | International Business Machines Corporation | Method and apparatus to update a windows registry from a hetrogeneous server |
US6917958B1 (en) * | 1999-04-26 | 2005-07-12 | International Business Machines Corporation | Method and apparatus for dynamic distribution of system file and system registry changes in a distributed data processing system |
US6779179B1 (en) * | 2000-03-20 | 2004-08-17 | Exent Technologies, Inc. | Registry emulation |
WO2001067379A2 (en) * | 2000-03-09 | 2001-09-13 | Exent Technologies, Inc. | Registry emulation |
WO2002005065A2 (en) * | 2000-07-11 | 2002-01-17 | Juice Software, Inc. | A method and system for integrating network-based functionality into productivity applications and documents |
JP2002182983A (ja) * | 2000-12-13 | 2002-06-28 | Sharp Corp | データベースへのアクセス制御方法、データベース装置、リソースへのアクセス制御方法、情報処理装置 |
US20050091658A1 (en) | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Operating system resource protection |
US7680758B2 (en) * | 2004-09-30 | 2010-03-16 | Citrix Systems, Inc. | Method and apparatus for isolating execution of software applications |
US8046831B2 (en) * | 2005-03-02 | 2011-10-25 | Actiance, Inc. | Automating software security restrictions on system resources |
US7606833B2 (en) * | 2005-04-08 | 2009-10-20 | The Mathworks, Inc. | System and method for using an RMI activation system daemon with non-JAVA applications |
US8151323B2 (en) * | 2006-04-12 | 2012-04-03 | Citrix Systems, Inc. | Systems and methods for providing levels of access and action control via an SSL VPN appliance |
US8171483B2 (en) * | 2007-10-20 | 2012-05-01 | Citrix Systems, Inc. | Method and system for communicating between isolation environments |
US8667512B2 (en) * | 2008-10-29 | 2014-03-04 | Qualcomm Incorporated | Flexible hierarchical settings registry for operating systems |
-
2009
- 2009-08-31 US US12/551,498 patent/US8667512B2/en not_active Expired - Fee Related
- 2009-10-29 KR KR1020117012070A patent/KR101359126B1/ko not_active IP Right Cessation
- 2009-10-29 WO PCT/US2009/062494 patent/WO2010051344A1/en active Application Filing
- 2009-10-29 EP EP09747977A patent/EP2350820A1/en not_active Withdrawn
- 2009-10-29 CN CN200980143460.7A patent/CN102203731B/zh not_active Expired - Fee Related
- 2009-10-29 JP JP2011534740A patent/JP5518884B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903753A (en) * | 1995-08-18 | 1999-05-11 | International Business Machines Corporation | Name space registry with backward compatibility for older applications |
CN1601465A (zh) * | 2003-08-29 | 2005-03-30 | 微软公司 | 动态注册表分区 |
Also Published As
Publication number | Publication date |
---|---|
KR20110079762A (ko) | 2011-07-07 |
US8667512B2 (en) | 2014-03-04 |
JP2012507801A (ja) | 2012-03-29 |
KR101359126B1 (ko) | 2014-02-06 |
US20100138844A1 (en) | 2010-06-03 |
WO2010051344A1 (en) | 2010-05-06 |
EP2350820A1 (en) | 2011-08-03 |
CN102203731A (zh) | 2011-09-28 |
JP5518884B2 (ja) | 2014-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102203731B (zh) | 用于操作***的灵活层级设置注册表 | |
US11375345B2 (en) | Message extension app store | |
US10505872B2 (en) | Messaging application interacting with one or more extension applications | |
US8046772B2 (en) | System and method for enterprise application interactions | |
US6947943B2 (en) | System for development, management and operation of distributed clients and servers | |
US7607126B2 (en) | System and method for external override of annotations | |
CN101356494B (zh) | 对主题进行换肤的***和方法 | |
CN100580633C (zh) | 一种维护计算装置中的应用程序的方法 | |
US20060253548A1 (en) | Method and system for hosting and executing a component application | |
EP2025095A2 (en) | Device management in a network | |
JP2012079332A (ja) | コンピュータプラットフォームのプログラミングインターフェース | |
EP1872230B1 (en) | Centralized memory management in wireless terminal devices | |
US20060195490A1 (en) | Context based access of files by file system to a client based on detection of related files opened by the client | |
US20100179982A1 (en) | Method for auditing the data of a computer application of a terminal | |
KR20080089204A (ko) | 네트워크 시스템, 단말 커스터마이즈 방법 및 커스터마이즈서비스 방법 | |
JP2003022189A (ja) | 分散ネットワークコンピューティングシステム | |
CN113435173B (zh) | 文本生成方法、相关装置及*** | |
US9223639B2 (en) | In place object reconstruction | |
US20090030938A1 (en) | System and method for providing data handling within a human capital management system | |
WO2007021775A2 (en) | A method for providing extensible software components within a distributed synchronization system | |
Li et al. | Mires: an information exchange system for mobile phones | |
Mawlood-Yunis | A Framework for Developing Custom Live Streaming Multimedia Apps | |
Pandit et al. | A model for contextual data sharing in smartphone applications | |
Privalova | Technology behind watchOS applications for Apple Watch | |
Cinar et al. | Application Components |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C53 | Correction of patent for invention or patent application | ||
CB03 | Change of inventor or designer information |
Inventor after: Mager Michael Inventor after: John D Boyd Inventor after: Michael J Wayinsi Inventor after: Walker Robert G Inventor before: Mager Michael |
|
COR | Change of bibliographic data |
Free format text: CORRECT: INVENTOR; FROM: MAGER MICHAEL TO: MAGER MICHAEL JOHN D. BOYD MICHAEL J. VINES ROBERT G. WALKER |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140430 Termination date: 20181029 |