WMI 注册表 StdRegProv
StdRegProv 类包含与系统注册表有关的方法。可用这些方法来:
验证用户的访问权
创建、枚举、和删除注册表项
创建、枚举、和删除键值
读取、修改、和删除数据
参数
各方法都有的参数 hDefKey
指定含有 sSubKeyName 路径的根键的可选参数。默认值为 HKEY_LOCAL_MACHINE (0x80000002)。以下的常数定义于 Winreg.h:
HKEY_CLASSES_ROOT (0x80000000)
HKEY_CURRENT_USER (0x80000001)
HKEY_LOCAL_MACHINE (0x80000002)
HKEY_USERS (0x80000003)
HKEY_CURRENT_CONFIG (0x80000005)
HKEY_DYN_DATA (0x80000006)
其中,HKEY_DYN_DATA 只是 Windows 95 和 Windows 98 计算机的合理的根键。
创建,删除和枚举
uint32 CreateKey([in] uint32 hDefKey,[in] string sSubKeyName);
CreateKey 方法在指定的根键创建子项
sSubKeyName 包含要创建的项。
CreateKey 方法创建路径里指定的不存在的所有子项。例如,如果 MyKey 和 MySubKey 不存在于以下路径里, CreateKey 创建这两项:
HKEY_LOCAL_MACHINE\SOFTWARE\MyKey\MySubKey
uint32 DeleteKey([in] uint32 hDefKey,[in] string sSubKeyName);
DeleteKey 方法在指定的根键里删除一个子项。
sSubKeyName 包含要删除的项。
uint32 EnumKey([in] uint32 hDefKey,[in] string sSubKeyName,[out] string sNames);
EnumKey 方法枚举某路径的子项。
sSubKeyName 指定包含要枚举的子项的路径。
sNames 包含一数组的子项字符串。
uint32 EnumValues([in] uint32 hDefKey,[in] string sSubKeyName,[out] string sNames,[out] sint32 iTypes);
EnumValues 方法枚举某子项的键值。
sSubKeyName 指定包含要被枚举的键值的路径。
sNames 包含一数组的键值名称的字符串。此数组的元素与 iTypes 的元素直接相对应。
iTypes 包含一数组的数据值类型 (整数)。您可用这些类型来决定调用哪个 Get 方法。例如,如果数据值类型是 REG_SZ,您应调用 GetStringValue 来检索键值的数据。此数组的元素与 sNames 的元素直接相关联。 以下数据值类型常数定义于 Winnt.h:
REG_SZ (1)
REG_EXPAND_SZ (2)
REG_BINARY (3)
REG_DWORD (4)
REG_MULTI_SZ (7)
uint32 DeleteValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName);
DeleteValue 方法在指定的子项里删除一个键值。
sSubKeyName 指定项,它包含要删除的键值。
sValueName 指定要从子项中删除的键值名。指定一个空的字符串来删除默认键值 (默认键值不被删除,它的数据被设置为 "(数值未设置)"
修改和读取
uint32 SetDWORDValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName,[in] uint32 uValue);
SetDWORDValue 方法为数据类型为 REG_DWORD 的键值设置数据。
sSubKeyName 指定包含要设置的键值的项。
sValueName 指定要设置数据的键值名。您可指定一个现有的键值 (更新) 或一个新的键值 (创建)。指定一个空的字符串来设置默认键值的数据。
uValue 指定一个双字数据。
uint32 GetDWORDValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName,[out] uint32 uValue);
GetDWORDValue 方法为数据类型为 REG_DWORD 的键值返回数据。
sSubKeyName 指定包含键值的路径。
sValueName 指定要检索数据的键值名。指定一个空字符串来得到默认键值。
uValue 包含键值的 DWORD 数据。
uint32 SetStringValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName,[in] string sValue);
SetStringValue 方法为数据类型为 REG_MULTI_SZ 的键值设置数值。
sSubKeyName 指定包含要设置的键值的项。
sValueName 指定要设置数据的键值名。您可指定一个现有的键值 (更新) 或一个新的键值 (创建)。指定一个空的字符串来设置默认键值的数据。
sValue 指定一个字符串数据。
uint32 GetStringValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName,[out] string sValue);
GetStringValue 方法为数据类型为 REG_SZ 的键值返回数据。
sSubKeyName 指定包含键值的路径。
sValueName 指定要检索数据的键值名。指定一个空字符串来得到默认键值。
sValue 包含键值的字符串数据。
uint32 SetMultiStringValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName,[in] string sValue);
SetMultiStringValue 方法为数据类型为 REG_MULTI_SZ 的键值设置数据。如果成功,SetMultiStringValue 方法返回一个 uint32 是 0; 如果出现任何错误,则是其他值。
sSubKeyName 指定包含要设置的键值的项。
sValueName 指定要设置数据的键值名。您可指定一个现有的键值 (更新) 或一个新的键值 (创建)。指定一个空的字符串来设置默认键值的数据。
sValue 指定一个字符串数据的数组。
uint32 GetMultiStringValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName,[out] string sValue);
GetMultiStringValue 方法为数据类型为 REG_MULTI_SZ 的键值返回数据。如果成功,GetMultiStringValue 方法返回一个 uint32 是 0;如果出现错误,则返回其他值。
sSubKeyName 指定包含键值的路径。
sValueName 指定要检索数据的键值名。指定一个空字符串来得到默认键值。
sValue 包含键值的一个字符串数据数组。
uint32 SetExpandedStringValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName,[in] string sValue);
SetExpandedStringValue 方法为数据类型为 REG_EXPAND_SZ 的键值设置数据。如果成功,SetExpandedStringValue 方法返回一个 uint32 是 0;如果出现错误,则返回其他值。
sSubKeyName 指定包含要设置的键值的项。
sValueName 指定要设置数据的键值名。您可指定一个现有的键值 (更新) 或一个新的键值 (创建)。指定一个空的字符串来设置默认键值的数据。
sValue 指定一个扩展的字符串数据。字符串里指定的环境变量必须存在,这样当您调用 GetExpandedStringValue 时,字符串才能被扩展。
uint32 GetExpandedStringValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName,[out] string sValue);
GetExpandedStringValue 方法为数据类型为 REG_EXPAND_SZ 的键值返回数据。
sSubKeyName 指定包含键值的路径。
sValueName 指定要检索数据的键值名。指定一个空字符串来得到默认键值。
sValue 包含扩展的键值的字符串数据。只有当环境变量 (例如, %Path%) 被定义,字符串方能得以扩展。
uint32 SetBinaryValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName,[in] uint8 uValue);
SetBinaryValue 方法为数据类型为 REG_BINARY 的键值设置数据。如果成功,The SetBinaryValue 方法返回一个 uint32 是 0;如果出现错误,则返回其他值。
sSubKeyName 指定包含要设置的键值的项。
sValueName 指定要设置数据的键值名。您可指定一个现有的键值 (更新) 或一个新的键值 (创建)。指定一个空的字符串来设置默认键值的数据。
uValue 指定一个二进制数据数组。
uint32 GetBinaryValue([in] uint32 hDefKey,[in] string sSubKeyName,[in] string sValueName,[out] uint8 uValue);
GetBinaryValue 方法为数据类型为 REG_BINARY 的键值返回数据。如果成功,The GetBinaryValue 方法返回一个 uint32 是 0;如果出现错误,则返回其他值。
sSubKeyName 指定包含键值的路径。
sValueName 指定要检索数据的键值名。指定一个空字符串来得到默认键值。
uValue 包含一个二进制字节数组。
验证访问权限
uint32 CheckAccess([in] uint32 hDefKey,[in] string sSubKeyName,[in] uint32 uRequired,[out] boolean bGranted);
CheckAccess 方法验证用户拥有指定的权限。如果成功,该方法返回一个 uint32 是 0;如果出现错误,则返回其他值。
sSubKeyName 包含要验证访问权限的子项。
uRequired 指定要验证的访问权限可选参数。您可将这些值加在一起来验证多个访问权限。默认值为 3。以下访问权限值被定义于 Winnt.h:
KEY_QUERY_VALUE (0x0001)
KEY_SET_VALUE (0x0002)
KEY_CREATE_SUB_KEY (0x0004)
KEY_ENUMERATE_SUB_KEYS (0x0008)
KEY_NOTIFY (0x0010)
KEY_CREATE_LINK (0x0020)
DELETE (0x00010000)
READ_CONTROL (0x00020000)
WRITE_DAC (0x00040000)
WRITE_OWNER (0x00080000)
bGranted
如果用户拥有指定的访问权限,这个参数为 True。否则,参数为 False.