KEY_LOCAL_MACHINE
* KEY_USERS
* KEY_CURRENT_CONFIG
* KEY_DYN_DATA
HKEY_CLASSES_ROOT键保存了文档类型和属性,以及有关安装在机器上的各种应用程序的分类信息。例如,如果在系统中单击此键,可能可以找到文件扩展名为.DOC的一个条目,在其下可以发现能处理此类文档的应用程序的条目。
HKEY_CURRENT_USER键包含当前用户的所有系统设置,包括配色方案、打印机和程序组。HKEY_LOCAL_MACHINE键保存了
计算机的状态信息,KEY_USERS键组织了系统中的每一个用户的信息及系统的缺省设置,KEY_CURRENT_CONFIG键保存了硬件配置信息。KEY_DYN_DATA键保存了有关动态注册的数据信息,这些数据是会频繁变动的。(在读者的系统中,不总是可以看这个键。)
在MFC应用程序中使用“注册”
现在读者了解了一些关于注册的知识,但完整的解释如何访问和使用注册需要一本书来进行阐述。正如读者可以想象的那样,Win32 API有许多操作注册的函数。但是,如果想使用这些函数,必须有把握!无效的注册设置可能破坏系统,使得它不能启动,也可能会使你不得不重新安装Windows。然而,通过MFC应用程序可以很容易的使用注册来存储读者的应用程序不同部分所需的信息。为了尽可能简化,MFC提供了带有SetRegistrykey ( )成员函数的CWinApp类,它在注册中创建(或打开)一个应用程序的按键条目,所需做的仅是提供一个键名(通常是一个公司名)给函数使用,如下所示:
SetRegistryKey("MyCoolCompany");
应该在应用程序类的InitInstance( )成员函数中调用SetRegistrykey( ),该成员函数将在程序启动时立即调用。
在调用过SetRegistrykey( )之后,读者的应用程序可以通过调用两个函数中的一个来创建一个子键及其所需数值,WriteProfileString( )函数往注册中增加一个字符串值,WriteProfileInt( )函数注册中增加一个整数值。要想从注册取得数据,可以使用GetProfileString( )和GetProfileInt( )函数(也可以使用RegSetValueEx( ) 和RegQueryValueEx( )来设置和检索注册中的值)。
注意 当第一次写入时,WriteProfileString( )、WriteProfileInt( )以及GetProfileString( )和GetProfileInt( )函数向(和从)INI文件中进行数据传递。单独使用时,它们仍然起作用。但是,当首先调用SetRegistrykey( )时,MFC重新调整这些函数对注册的访问,这样使用注册成了一个简单的过程。
简单的应用程序
读者已经建立了一个使用注册的应用程序。这儿有一段从CMultiStringApp :: InitInstance( )中摘录的代码,它是由AppWizard生成的,它同样也存在于CFileDemoApp: : InitInstance( )之中。
// Change the registry key under which our settings are stored.
// You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T(襆ocal AppWizard-Generated Applications*));
LoadStdProfileSettings(); // Load standard INI file options (including MRU)
MRU代表Most Recently Used(最近使用),指的是用应用程序打开文件后出现在File菜单中的文件列表。Registry Editor显示保存此信息的键:HKEY_CURRENT_USER\Software\Local AppWizard-Generated Applications\MultiString\Recent File List。在前台,MultiString的File菜单在MRU列表中显示一个条目。