// © 1998-1999 Microsoft Corporation. All rights reserved. #pragma autorecover Qualifier Description : ToSubClass Amended; #pragma namespace ("\\\\.\\Root\\Default") class RegistryEvent : __ExtrinsicEvent { }; class RegistryKeyChangeEvent : RegistryEvent { string Hive; string KeyPath; }; class RegistryTreeChangeEvent : RegistryEvent { string Hive; string RootPath; }; class RegistryValueChangeEvent : RegistryEvent { string Hive; string KeyPath; string ValueName; }; instance of __Win32Provider as $P { Name = "RegistryEventProvider"; Clsid = "{fa77a74e-e109-11d0-ad6e-00c04fd8fdff}"; HostingModel = "LocalSystemHost"; }; instance of __EventProviderRegistration { Provider = $P; EventQueryList = {"select * from RegistryEvent"}; }; instance of __Win32Provider as $PINST { Name = "RegProv" ; ClsId = "{fe9af5c0-d3b6-11ce-a5b6-00aa00680c3f}" ; ImpersonationLevel = 1; HostingModel = "LocalSystemHost"; }; instance of __MethodProviderRegistration { Provider = $PINST; }; instance of __InstanceProviderRegistration { Provider = $PINST; SupportsPut = TRUE; SupportsGet = TRUE; SupportsDelete = FALSE; SupportsEnumeration = TRUE; }; instance of __Win32Provider as $PPROP { Name = "RegPropProv"; Clsid = "{72967901-68EC-11d0-B729-00AA0062CBB7}"; ImpersonationLevel = 1; PerUserInitialization = TRUE; HostingModel = "LocalSystemHost"; }; instance of __PropertyProviderRegistration { Provider = $PPROP; SupportsGet = TRUE; SupportsPut = TRUE; }; ///////////////////////////////////////////////////////////////////// // // Declare a class whose methods are executed by the sample provider. [Locale(0x409), Description("The StdRegProv class contains methods that " "interact with the system registry. You can use these methods to: \n" "Verify the access permissions for a user \n" "Create, enumerate, and delete registry keys \n" "Create, enumerate, and delete named values \n" "Read, write, and delete data values "), dynamic: ToInstance, provider("RegProv")] class StdRegProv { [Description("The CreateKey method creates a subkey in the " "specified tree. "), implemented, static] uint32 CreateKey( [Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [Description("Contains the key to be created. The " "CreateKey method creates all subkeys specified in " "the path that do not exist. For example, if MyKey " "and MySubKey do not exist in the following path, " "CreateKey creates both keys: \n" "HKEY_LOCAL_MACHINE\\SOFTWARE\\MyKey\\MySubKey "), IN] string sSubKeyName ); [ Description("The DeleteKey method deletes a subkey in the specified tree. "), implemented, static] uint32 DeleteKey( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Contains the key to be deleted. "), IN] string sSubKeyName ); [ Description("The EnumKey method enumerates the " "subkeys for the given path. "), implemented, static] uint32 EnumKey( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the path that contains the " "subkeys to be enumerated. "), IN] string sSubKeyName, [ Description("Contains an array of subkey strings. "), out] string sNames[] ); [ Description("The EnumValues method enumerates the named " "values of the given subkey. "), implemented, static] uint32 EnumValues( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the path that contains the named " "values to be enumerated. "), IN] string sSubKeyName, [ Description("Contains an array of named value " "strings. The elements of this array correspond " "directly with the elements of iTypes. "), out] string sNames[], [ Description("Contains an array of data value types " "(integers). You can use these types to determine " "which Get method to call. For example, if the data " "value type is REG_SZ, you would call GetStringValue " "to retrieve the named value's data value. The " "elements of this array correspond directly with " "the elements of sNames. The following data value " "types are defined in Winnt.h: \n" "REG_SZ (1) \n" "REG_EXPAND_SZ (2) \n" "REG_BINARY (3) \n" "REG_DWORD (4) \n" "REG_MULTI_SZ (7) \n"), out] sint32 Types[] ); [ Description("The DeleteValue method deletes " "a named value in the specified subkey."), implemented, static] uint32 DeleteValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the key that contains the named " "value to be deleted. "), IN] string sSubKeyName, [ Description("Specifies the named value to be deleted " "from the subkey. Specify an empty string to delete " "the default named value (the default named value " "is not deleted its value is set to \"value not set\""), in] string sValueName ); [ Description("The SetDWORDValue method sets the data value " "for a named value whose data type is REG_BINARY. "), implemented, static] uint32 SetDWORDValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the key that contains the named " "value to be set. "), IN] string sSubKeyName, [ Description("Specifies the named value whose data value " "you are setting. You can specify an existing named " "value (update) or a new named value (create). Specify " "an empty string to set the data value for the default " "named value. "), in] string sValueName, [ Description("Specifies a double word data value. "), in] uint32 uValue=3 ); [ Description("The GetDWORDValue method returns the data value " "for a named value whose data type is REG_DWORD. "), implemented, static] uint32 GetDWORDValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the path that contains the named " "values. "), IN] string sSubKeyName, [ Description("Specifies the named value whose data value " "you are retrieving. Specify an empty string to get the " "default named value."), in] string sValueName, [ Description("Contains the DWORD data value for the " "named value. "), out] uint32 uValue ); [ Description("The SetStringValue method sets the data " "value for a named value whose data type is REG_MULTI_SZ."), implemented, static] uint32 SetStringValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the key that contains the " "named value to be set. "), IN] string sSubKeyName, [ Description("Specifies the named value whose data " "value you are setting. You can specify an existing " "named value (update) or a new named value (create). " "Specify an empty string to set the data value for the " "default named value. "), in] string sValueName, [ Description("Specifies a string data value."), in] string sValue="hello" ); [ Description("The GetStringValue method returns the data " "value for a named value whose data type is REG_SZ. "), implemented, static] uint32 GetStringValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the path that contains the named" " values. "), IN] string sSubKeyName, [ Description("Specifies the named value whose data " "value you are retrieving. Specify an empty string to " "get the default named value. "), in] string sValueName, [ Description("Contains the string data value for the " "named value. "), out] string sValue ); [ Description("The SetMultiStringValue method sets the data " "value for a named value whose data type is REG_MULTI_SZ. " "The SetMultiStringValue method returns a uint32 which is " "0 if successful or some other value if any other error occurred."), implemented, static] uint32 SetMultiStringValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the key that contains the " "named value to be set. "), IN] string sSubKeyName, [ Description("Specifies the named value whose data " "value you are setting. You can specify an existing " "named value (update) or a new named value (create). " "Specify an empty string to set the data value for " "the default named value. "), in] string sValueName, [ Description("Specifies an array of string data values. "), in] string sValue[] = {"hello", "there"} ); [ Description("The GetMultiStringValue method returns the data " "value for a named value whose data type is REG_MULTI_SZ. " "The GetMultiStringValue method returns a uint32 which " "is 0 if successful or some other value if any other error " "occurred."), implemented, static] uint32 GetMultiStringValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the path that contains the " "named values. "), IN] string sSubKeyName, [ Description("Specifies the named value whose data " "value you are retrieving. Specify an empty string to " "get the default named value. "), in] string sValueName, [ Description("Contains an array of string data values " "for the named value. "), out] string sValue[] ); [ Description("The SetExpandedStringValue method sets the data " "value for a named value whose data type is REG_EXPAND_SZ. " "The SetExpandedStringValue method returns a uint32 which is " "0 if successful or some other value if any other error occurred."), implemented, static] uint32 SetExpandedStringValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the key that contains the named " "value to be set. "), IN] string sSubKeyName, [ Description("Specifies the named value whose data " "value you are setting. You can specify an existing " "named value (update) or a new named value (create). " "Specify an empty string to set the data value for the " "default named value. "), in] string sValueName, [ Description("Specifies an expanded string data value. " "The environment variable specified in the string must " "exist for the string to be expanded when you " "call GetExpandedStringValue. "), in] string sValue="%path%" ); [ Description("The GetExpandedStringValue method returns the " "data value for a named value whose data type is REG_EXPAND_SZ. "), implemented, static] uint32 GetExpandedStringValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the path that contains the " "named values. "), IN] string sSubKeyName, [ Description("Specifies the named value whose data " "value you are retrieving. Specify an empty string to " "get the default named value. "), in] string sValueName, [ Description("Contains the expanded string data value " "for the named value. The string is only expanded if " "the environment variable (for example, %Path%) is defined. "), out] string sValue ); [ Description("The SetBinaryValue method sets the data value " "for a named value whose data type is REG_BINARY. " "The SetBinaryValue method returns a uint32 which is 0 if " "successful or some other value if any other error occurred."), implemented, static] uint32 SetBinaryValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the key that contains the named " "value to be set. "), IN] string sSubKeyName, [ Description("Specifies the named value whose data " "value you are setting. You can specify an existing " "named value (update) or a new named value (create). " "Specify an empty string to set the data value for " "the default named value. "), in] string sValueName, [ Description("Specifies an array of binary data values. "), in] uint8 uValue[]={1,2} ); [ Description("The GetBinaryValue method returns the data " "value for a named value whose data type is REG_BINARY. " "The GetBinaryValue method returns a uint32 which is 0 if " "successful or some other value if any other error occurred."), implemented, static] uint32 GetBinaryValue( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Specifies the path that contains the " "named values. "), IN] string sSubKeyName, [ Description("Specifies the named value whose data " "value you are retrieving. Specify an empty string " "to get the default named value. "), in] string sValueName, [ Description("Contains an array of binary bytes. "), out] uint8 uValue[] ); [ Description("The CheckAccess method verifies that the user " "possesses the specified permissions. " "The method returns a uint32 which is 0 if successful or " "some other value if any other error occurred."), implemented, static] uint32 CheckAccess( [ Description("Optional parameter that specifies the " "tree that contains the sSubKeyName path. The default " "value is HKEY_LOCAL_MACHINE (0x80000002). The following " "trees are defined in Winreg.h: \n" "HKEY_CLASSES_ROOT (0x80000000) \n" "HKEY_CURRENT_USER (0x80000001) \n" "HKEY_LOCAL_MACHINE (0x80000002) \n" "HKEY_USERS (0x80000003) \n" "HKEY_CURRENT_CONFIG (0x80000005) \n" "HKEY_DYN_DATA (0x80000006) \n" "Note that HKEY_DYN_DATA is a valid tree for " "Windows 95 and Windows 98 computers only. "), IN] uint32 hDefKey = 0x80000002, [ Description("Contains the key to be verified. "), IN] string sSubKeyName, [ Description("Optional parameter that specifies " "the access permissions to be verified. You can " "add these values together to verify more than one " "access permission. The default value is 3. The " "following access permission values are defined " "in Winnt.h: \n" "KEY_QUERY_VALUE (0X0001) \n" "KEY_SET_VALUE (0X0002) \n" "KEY_CREATE_SUB_KEY (0X0004) \n" "KEY_ENUMERATE_SUB_KEYS (0X0008) \n" "KEY_NOTIFY (0X0010) \n" "KEY_CREATE_LINK (0X0020) \n" "DELETE (0x00010000) \n" "READ_CONTROL (0x00020000) \n" "WRITE_DAC (0X00040000) \n" "WRITE_OWNER (0X00080000) "), in] uint32 uRequired = 3, [ Description("This parameter is True if user possesses " "the specified access permissions. Otherwise, the " "parameter is False. "), out] boolean bGranted ); };