RegistryKey::GetValue Method (String^, Object^, RegistryValueOptions)
Retrieves the value associated with the specified name and retrieval options. If the name is not found, returns the default value that you provide.
Assembly: mscorlib (in mscorlib.dll)
public: [ComVisibleAttribute(false)] Object^ GetValue( String^ name, Object^ defaultValue, RegistryValueOptions options )
Parameters
- name
-
Type:
System::String^
The name of the value to retrieve. This string is not case-sensitive.
- defaultValue
-
Type:
System::Object^
The value to return if name does not exist.
- options
-
Type:
Microsoft.Win32::RegistryValueOptions
One of the enumeration values that specifies optional processing of the retrieved value.
Return Value
Type: System::Object^The value associated with name, processed according to the specified options, or defaultValue if name is not found.
| Exception | Condition |
|---|---|
| SecurityException | The user does not have the permissions required to read from the registry key. |
| ObjectDisposedException | The RegistryKey that contains the specified value is closed (closed keys cannot be accessed). |
| IOException | The RegistryKey that contains the specified value has been marked for deletion. |
| ArgumentException | options is not a valid RegistryValueOptions value; for example, an invalid value is cast to RegistryValueOptions. |
| UnauthorizedAccessException | The user does not have the necessary registry rights. |
Use this overload to specify special processing of the retrieved value. For example, you can specify RegistryValueOptions::DoNotExpandEnvironmentNames when retrieving a registry value of type RegistryValueKind::ExpandString to retrieve the string without expanding embedded environment variables.
Use the defaultValue parameter to specify the value to return if name does not exist.
Note |
|---|
A registry key can have one value that is not associated with any name. When this unnamed value is displayed in the registry editor, the string "(Default)" appears instead of a name. To retrieve this unnamed value, specify either null or the empty string ("") for name. GetValue does not support reading values of type REG_NONE or REG_LINK. In both cases, the default value (null) is returned instead of the actual value. |
The following code sample creates a test key, adds a value with an embedded environment variable, and retrieves the value in both expanded and unexpanded forms.
#using <Microsoft.VisualBasic.dll> using namespace System; using namespace Microsoft::Win32; using namespace Microsoft::VisualBasic; int main() { // Delete and recreate the test key. Registry::CurrentUser->DeleteSubKey( L"RegistryValueOptionsExample", false ); RegistryKey ^ rk = Registry::CurrentUser->CreateSubKey( L"RegistryValueOptionsExample" ); // Add a value that contains an environment variable. rk->SetValue( L"ExpandValue", L"The path is %PATH%", RegistryValueKind::ExpandString ); // Retrieve the value, first without expanding the environment // variable and then expanding it. Console::WriteLine( L"Unexpanded: \"{0}\"", rk->GetValue( L"ExpandValue", L"No Value", RegistryValueOptions::DoNotExpandEnvironmentNames ) ); Console::WriteLine( L"Expanded: \"{0}\"", rk->GetValue( L"ExpandValue" ) ); return 0; } //Main
to read from the registry. Associated enumeration: RegistryPermissionAccess::Read
to read a registry key of type REG_EXPAND_SZ. Associated enumeration: PermissionState::Unrestricted
Available since 2.0
