/*++ Copyright (c) 1989 Microsoft Corporation Module Name: regtool.h Abstract: This is the include file for the REGTOOL.DLL registry helper. Author: Steve Wood (stevewo) 16-Nov-1995 Revision History: --*/ // // Routines for accessing registry. Allows code to access any of the following // registry locations with the same code: // // Windows NT registry on local machine // Windows NT registry on remote machine // Windows NT hive files // #define REG_TARGET_DISCONNECTED 0 #define REG_TARGET_LOCAL_REGISTRY 1 #define REG_TARGET_REMOTE_REGISTRY 2 #define REG_TARGET_HIVE_REGISTRY 4 typedef struct _REG_CONTEXT_OPEN_HIVE_KEY { struct _REG_CONTEXT_OPEN_HIVE_KEY *Next; HKEY KeyHandle; ULONG ReferenceCount; } REG_CONTEXT_OPEN_HIVE_KEY, *PREG_CONTEXT_OPEN_HIVE_KEY; typedef struct _REG_CONTEXT { struct _REG_CONTEXT *Next; ULONG Target; HKEY MachineRoot; HKEY UsersRoot; HKEY CurrentUserRoot; WCHAR MachinePath[ MAX_PATH ]; WCHAR UsersPath[ MAX_PATH ]; WCHAR CurrentUserPath[ MAX_PATH ]; ULONG MachinePathLength; ULONG UsersPathLength; ULONG CurrentUserPathLength; HKEY HiveRootHandle; OBJECT_ATTRIBUTES HiveRootKey; PREG_CONTEXT_OPEN_HIVE_KEY OpenHiveKeys; } REG_CONTEXT, *PREG_CONTEXT; BOOLEAN RTEnableBackupRestorePrivilege( void ); void RTDisableBackupRestorePrivilege( void ); LONG RTConnectToRegistry( IN PWSTR MachineName, IN PWSTR HiveFileName, IN PWSTR HiveRootName, OUT PWSTR *DefaultRootKeyName, OUT PREG_CONTEXT RegistryContext ); LONG RTDisconnectFromRegistry( IN PREG_CONTEXT RegistryContext ); LONG RTCreateKey( IN PREG_CONTEXT RegistryContext, IN HKEY RootKeyHandle, IN PCWSTR SubKeyName, IN ACCESS_MASK DesiredAccess, IN ULONG CreateOptions, IN PVOID SecurityDescriptor, OUT PHKEY ReturnedKeyHandle, OUT PULONG Disposition ); LONG RTOpenKey( IN PREG_CONTEXT RegistryContext, IN HKEY RootKeyHandle, IN PCWSTR SubKeyName, IN ACCESS_MASK DesiredAccess, IN ULONG OpenOptions, OUT PHKEY ReturnedKeyHandle ); #define HKEY_REGISTRY_ROOT (( HKEY ) (ULONG_PTR)((LONG)0x8000000A) ) LONG RTCloseKey( IN PREG_CONTEXT RegistryContext, IN HKEY KeyHandle ); LONG RTEnumerateValueKey( IN PREG_CONTEXT RegistryContext, IN HKEY KeyHandle, IN ULONG Index, OUT PULONG ValueType, IN OUT PULONG ValueNameLength, OUT PWSTR ValueName, IN OUT PULONG ValueDataLength, OUT PVOID ValueData ); LONG RTQueryValueKey( IN PREG_CONTEXT RegistryContext, IN HKEY KeyHandle, IN PWSTR ValueName, OUT PULONG ValueType, IN OUT PULONG ValueDataLength, OUT PVOID ValueData );