十二、注册表操作函数
注册表操作函数用于得到和设置系统注册库中的值。需要注意的是,这组函数只能在Microsoft Windows系统中使用,在Macintosh和UNIX平台上无效。
1、RegistryDelete()
功 能:删除Windows系统注册库中的一个键或键的某个值。
语 法:RegistryDelete ( key, valuename )
参 数:key:string类型,指定键名,将删除该键或删除该键的某个值;
valuename:string类型,指定要删除的值的名称。如果想删除键、键的值、以及其下的所有子键,那么将该参数指定为空字符串。
返回值:Integer。函数执行成功时返回1,发生错误时返回-1。
用 法:为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。
示 例:This statement deletes the value name Title and its associated value from the registry. The key is not deleted:
RegistryDelete("HKEY_LOCAL_MACHINE\Software\MyApp.Settings\Fonts","Title")
2、RegistryGet()
功 能:从系统注册库中得到指定键的值。
语 法:RegistryGet ( key, valuename, valuetype, valuevariable )
参 数:key:string类型,指定键名;
valuename:string类型,指定要访问值的名称。每个键可以有一个未命名的值和多个命名的值。要访问未命名的值,把该参数指定为空字符串("");
valuetype:RegistryValueType枚举类型,指定值的数据类型。有效取值请参看用法;
valuevariable:用于保存键值的变量,其数据类型应该与valuetype参数指定的类型相匹配。
返回值:Integer。函数执行成功时返回1,发生错误时返回-1。如果valuevariable的数据类型与valuetype参数指定的类型不匹配,将引发运行错误。
用 法:valuetype的可能取值为:
RegString! -- 以空字符结束的字符串;
RegExpandString! -- 以空字符结束的字符串,其中包括了对环境变量的非扩展应用;
RegBinary! -- 二进制数据;
ReguLong! -- 32位数据;
ReguLongBigEndian! -- 32位大数据;
RegLink! -- Unicode符号链;
RegMultiString! -- 动态字符串数组。
为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。
示 例:1、This statement obtains the value for the name Title and stores it in the string ls_titlefont:
string ls_titlefont
RegistryGet("HKEY_LOCAL_MACHINE\Software\MyApp.Settings\Fonts","Title",RegString!, &
ls_titlefont)
This statement obtains the value for the name NameOfEntryNum and stores it in the long ul_num:
ulong ul_num
RegistryGet("HKEY_USERS\MyApp.Settings\Fonts","NameOfEntryNum", RegULong!, ul_num)
3、RegistryKeys()
功 能:从系统注册库中得到指定键的有效子键。
语 法:RegistryKeys ( key, subkeys )
参 数:key:string类型,指定键名;
subkeys:字符串数组变量,用于保存各子键。
返回值:Integer。函数执行成功时返回1,发生错误时返回-1。
用 法:在subkeys参数中可以使用定长数组,也可以使用动态数组。使用动态数组时,数组的上界反映了能够得到的子键个数。当使用定长数组时,其数组元素个数必须足够多,保证能够容纳所有子键,但是,在具体得到子键之前,没有办法能够预先知道实际子键个数。
为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。
示 例:This example obtains the subkeys associated with the key HKEY_CLASSES_ROOT\MyApp. The subkeys are stored in the variable-size array ls_subkeylist:
string ls_subkeylist[]
integer li_rtn
li_rtn = RegistryKeys("HKEY_CLASSES_ROOT\MyApp", ls_subkeylist)
IF li_rtn = -1 THEN
... // Error processing
END IF
4、RegistrySet()
功 能:在系统注册库中设置或创建指定键。
语 法:RegistrySet ( key, valuename, valuetype, value )
参 数:key:string类型,指定键名;
valuename:string类型,指定要访问值的名称。每个键可以有一个未命名的值和多个命名的值。要访问未命名的值,把该参数指定为空字符串("")。如果注册库中不存在指定值名,该函数将创建新的值名。
valuetype:RegistryValueType枚举类型,指定值的数据类型。有效取值请参看用法;
value:要设置的值,其数据类型应该与valuetype参数指定的类型相匹配。
返回值:Integer。函数执行成功时返回1,发生错误时返回-1。如果valuevariable的数据类型与valuetype参数指定的类型不匹配,将引发运行错误。
用 法:valuetype的可能取值为:
RegString! -- 以空字符结束的字符串;
RegExpandString! -- 以空字符结束的字符串,其中包括了对环境变量的非扩展应用;
RegBinary! -- 二进制数据;
ReguLong! -- 32位数据;
ReguLongBigEndian! -- 32位大数据;
RegLink! -- Unicode符号链;
RegMultiString! -- 动态字符串数组。
为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。
示 例:1、This example sets a value for the key Fonts and the value name Title:
RegistrySet("HKEY_LOCAL_MACHINE\Software\MyApp\Fonts","Title",RegString!, sle_font.Text)
2、This statement sets a value for the key Fonts and the value name NameOfEntryNum:
ulong ul_num
RegistrySet("HKEY_USERS\MyApp.Settings\Fonts","NameOfEntryNum", RegULong!, ul_num)
5、RegistryValues()
功 能:得到与指定键相关的一组值名。该函数在Windows 3.1中无效。
语 法:RegistryValues ( key, valuename )
参 数:key:string类型,指定键名;
valuename:字符串数组变量,用于保存值名。
返回值:Integer。函数执行成功时返回1,发生错误时返回-1。
用 法:在valuename 参数中可以使用定长数组,也可以使用动态数组。使用动态数组时,数组的上界反映了能够得到的值名个数。当使用定长数组时,其数组元素个数必须足够多,保证能够容纳所有值名,但是,在具体得到值名之前,没有办法能够预先知道实际值名个数。
为了唯一地标识某个键,在key参数中,可以从根键开始依次指定各级父键,各键之间使用反斜杠(\)分隔。
示 例:This example gets the value names associated with the key Fonts and stores them in the array ls_valuearray:
string ls_valuearray[]
RegistryValues("HKEY_LOCAL_MACHINE\Software\MyApp.Settings\Fonts",ls_valuearray)