RegistryHive Enumeration
Represents the possible values for a top-level node on a foreign machine.
[Visual Basic] <Serializable> Public Enum RegistryHive [C#] [Serializable] public enum RegistryHive [C++] [Serializable] __value public enum RegistryHive [JScript] public Serializable enum RegistryHive
Remarks
RegistryHive values are used by the OpenRemoteBaseKey method to represent the top-level node of a requested key on a foreign (remote) machine. The node that can be opened with the OpenRemoteBaseKey method must be one of these top-level RegistryKeys. Further access to the subkeys of the identified node is available using using methods in RegistryKey, so long as the the user has appropriate permission.
Members
| Member name | Description |
|---|---|
| ClassesRoot | Represents the HKEY_CLASSES_ROOT base key on another computer. This value can be passed to the OpenRemoteBaseKey method, to open this node remotely. |
| CurrentConfig | Represents the HKEY_CURRENT_CONFIG base key on another computer. This value can be passed to the OpenRemoteBaseKey method, to open this node remotely. |
| CurrentUser | Represents the HKEY_CURRENT_USER base key on another computer. This value can be passed to the OpenRemoteBaseKey method, to open this node remotely. |
| DynData | Represents the HKEY_DYN_DATA base key on another computer. This value can be passed to the OpenRemoteBaseKey method, to open this node remotely. |
| LocalMachine | Represents the HKEY_LOCAL_MACHINE base key on another computer. This value can be passed to the OpenRemoteBaseKey method, to open this node remotely. |
| PerformanceData | Represents the HKEY_PERFORMANCE_DATA base key on another computer. This value can be passed to the OpenRemoteBaseKey method, to open this node remotely. |
| Users | Represents the HKEY_USERS base key on another computer. This value can be passed to the OpenRemoteBaseKey method, to open this node remotely. |
Example
[Visual Basic, C#, C++] The following code example shows how to open a registry key on a remote computer and enumerate the values of the key. The remote computer must be running the remote registry service. Specify the name of the remote computer as a command-line argument when invoking the program.
[Visual Basic] Imports Microsoft.VisualBasic Imports System Imports System.IO Imports System.Security.Permissions Imports Microsoft.Win32 <Assembly: RegistryPermissionAttribute( _ SecurityAction.RequestMinimum, _ Read := "HKEY_CURRENT_USER\Environment")> <Assembly: SecurityPermissionAttribute( _ SecurityAction.RequestMinimum, UnmanagedCode := True)> Public Class RemoteKey Shared Sub Main(commandLineArgs As String()) Dim environmentKey As RegistryKey ' Check that an argument was specified when the ' program was invoked. If commandLineArgs.Length = 0 Then Console.WriteLine("Error: The name of the remote " & _ "computer must be specified as input on the " & _ "command line.") Return End If Try ' Open HKEY_CURRENT_USER\Environment on a remote computer. environmentKey = RegistryKey.OpenRemoteBaseKey( _ RegistryHive.CurrentUser, _ commandLineArgs(0)).OpenSubKey("Environment") Catch ex As IOException Console.WriteLine("{0}: {1}", _ ex.GetType().Name, ex.Message) Return End Try ' Print the values. Console.WriteLine("\nThere are {0} values For {1}.", _ environmentKey.ValueCount.ToString(), environmentKey.Name) For Each valueName As String In environmentKey.GetValueNames() Console.WriteLine("{0,-20}: {1}", valueName, _ environmentKey.GetValue(valueName).ToString()) Next ' Close the registry key. environmentKey.Close() End Sub End Class [C#] using System; using System.IO; using System.Security.Permissions; using Microsoft.Win32; [assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, Read = @"HKEY_CURRENT_USER\Environment")] [assembly: SecurityPermissionAttribute(SecurityAction.RequestMinimum, UnmanagedCode = true)] class RemoteKey { static void Main(string[] args) { RegistryKey environmentKey; string remoteName; // Check that an argument was specified when the // program was invoked. if(args.Length == 0) { Console.WriteLine("Error: The name of the remote " + "computer must be specified when the program is " + "invoked."); return; } else { remoteName = args[0]; } try { // Open HKEY_CURRENT_USER\Environment // on a remote computer. environmentKey = RegistryKey.OpenRemoteBaseKey( RegistryHive.CurrentUser, remoteName).OpenSubKey( "Environment"); } catch(IOException e) { Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message); return; } // Print the values. Console.WriteLine("\nThere are {0} values for {1}.", environmentKey.ValueCount.ToString(), environmentKey.Name); foreach(string valueName in environmentKey.GetValueNames()) { Console.WriteLine("{0,-20}: {1}", valueName, environmentKey.GetValue(valueName).ToString()); } // Close the registry key. environmentKey.Close(); } } [C++] #using <mscorlib.dll> using namespace System; using namespace System::IO; using namespace System::Security::Permissions; using namespace Microsoft::Win32; [assembly: RegistryPermissionAttribute(SecurityAction::RequestMinimum, Read = "HKEY_CURRENT_USER\\Environment")]; [assembly: SecurityPermissionAttribute(SecurityAction::RequestMinimum, UnmanagedCode = true)]; void main(int argc, char* argv[]) { RegistryKey* environmentKey; // Check that an argument was specified when the // program was invoked. if(argc == 1) { Console::WriteLine(S"Error: The name of the remote computer " S"must be specified as input on the command line."); return; } try { // Open HKEY_CURRENT_USER\Environment on a remote computer. environmentKey = RegistryKey::OpenRemoteBaseKey( RegistryHive::CurrentUser, argv[1])->OpenSubKey(S"Environment"); } catch(IOException* e) { Console::WriteLine("{0}: {1}", e->GetType()->Name, e->Message); return; } // Print the values. Console::WriteLine(S"\nThere are {0} values for {1}.", environmentKey->ValueCount.ToString(), environmentKey->Name); String* valueNames __gc [] = environmentKey->GetValueNames(); for(int i = 0; i < environmentKey->ValueCount; i++) { Console::WriteLine("{0,-20}: {1}", valueNames[i], environmentKey->GetValue(valueNames[i])->ToString()); } // Close the registry key. environmentKey->Close(); }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: Microsoft.Win32
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
Assembly: Mscorlib (in Mscorlib.dll)