Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / clr / src / BCL / Microsoft / Win32 / Registry.cs / 1 / Registry.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
namespace Microsoft.Win32 {
using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
/**
* Registry encapsulation. Contains members representing all top level system
* keys.
*
* @security(checkClassLinking=on)
*/
//This class contains only static members and does not need to be serializable.
[ComVisible(true)]
public static class Registry {
/**
* Current User Key.
*
* This key should be used as the root for all user specific settings.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey CurrentUser = RegistryKey.GetBaseKey(RegistryKey.HKEY_CURRENT_USER);
/**
* Local Machine Key.
*
* This key should be used as the root for all machine specific settings.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey LocalMachine = RegistryKey.GetBaseKey(RegistryKey.HKEY_LOCAL_MACHINE);
/**
* Classes Root Key.
*
* This is the root key of class information.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey ClassesRoot = RegistryKey.GetBaseKey(RegistryKey.HKEY_CLASSES_ROOT);
/**
* Users Root Key.
*
* This is the root of users.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey Users = RegistryKey.GetBaseKey(RegistryKey.HKEY_USERS);
/**
* Performance Root Key.
*
* This is where dynamic performance data is stored on NT.
* This does not exist on Win9X.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey PerformanceData = RegistryKey.GetBaseKey(RegistryKey.HKEY_PERFORMANCE_DATA);
/**
* Current Config Root Key.
*
* This is where current configuration information is stored.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey CurrentConfig = RegistryKey.GetBaseKey(RegistryKey.HKEY_CURRENT_CONFIG);
/**
* Dynamic Data Root Key.
*
* This is where dynamic performance data is stored on Win9X.
* This does not exist on NT.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey DynData = RegistryKey.GetBaseKey(RegistryKey.HKEY_DYN_DATA);
//
// Following function will parse a keyName and returns the basekey for it.
// It will also store the subkey name in the out parameter.
// If the keyName is not valid, we will throw ArgumentException.
// The return value shouldn't be null.
//
private static RegistryKey GetBaseKeyFromKeyName(string keyName, out string subKeyName) {
if( keyName == null) {
throw new ArgumentNullException("keyName");
}
string basekeyName;
int i = keyName.IndexOf('\\');
if( i != -1) {
basekeyName = keyName.Substring(0, i).ToUpper(System.Globalization.CultureInfo.InvariantCulture);
}
else {
basekeyName = keyName.ToUpper(System.Globalization.CultureInfo.InvariantCulture);
}
RegistryKey basekey = null;
switch(basekeyName) {
case "HKEY_CURRENT_USER":
basekey = Registry.CurrentUser;
break;
case "HKEY_LOCAL_MACHINE":
basekey = Registry.LocalMachine;
break;
case "HKEY_CLASSES_ROOT":
basekey = Registry.ClassesRoot;
break;
case "HKEY_USERS":
basekey = Registry.Users;
break;
case "HKEY_PERFORMANCE_DATA":
basekey = Registry.PerformanceData;
break;
case "HKEY_CURRENT_CONFIG":
basekey = Registry.CurrentConfig;
break;
case "HKEY_DYN_DATA":
basekey = Registry.DynData;
break;
default:
throw new ArgumentException(Environment.GetResourceString("Arg_RegInvalidKeyName", "keyName"));
}
if( i == -1 || i == keyName.Length) {
subKeyName = string.Empty;
}
else {
subKeyName = keyName.Substring(i + 1, keyName.Length - i - 1);
}
return basekey;
}
[ResourceExposure(ResourceScope.Machine)]
[ResourceConsumption(ResourceScope.Machine)]
public static object GetValue(string keyName, string valueName, object defaultValue ) {
string subKeyName;
RegistryKey basekey = GetBaseKeyFromKeyName(keyName, out subKeyName);
BCLDebug.Assert(basekey != null, "basekey can't be null.");
RegistryKey key = basekey.OpenSubKey(subKeyName);
if(key == null) { // if the key doesn't exist, do nothing
return null;
}
try {
return key.GetValue(valueName, defaultValue);
}
finally {
key.Close();
}
}
[ResourceExposure(ResourceScope.Machine)]
[ResourceConsumption(ResourceScope.Machine)]
public static void SetValue(string keyName, string valueName, object value ) {
SetValue(keyName, valueName, value, RegistryValueKind.Unknown);
}
[ResourceExposure(ResourceScope.Machine)]
[ResourceConsumption(ResourceScope.Machine)]
public static void SetValue(string keyName, string valueName, object value, RegistryValueKind valueKind ) {
string subKeyName;
RegistryKey basekey = GetBaseKeyFromKeyName(keyName, out subKeyName);
BCLDebug.Assert(basekey != null, "basekey can't be null!");
RegistryKey key = basekey.CreateSubKey(subKeyName);
BCLDebug.Assert(key != null, "An exception should be thrown if failed!");
try {
key.SetValue(valueName, value, valueKind);
}
finally {
key.Close();
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
namespace Microsoft.Win32 {
using System;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
/**
* Registry encapsulation. Contains members representing all top level system
* keys.
*
* @security(checkClassLinking=on)
*/
//This class contains only static members and does not need to be serializable.
[ComVisible(true)]
public static class Registry {
/**
* Current User Key.
*
* This key should be used as the root for all user specific settings.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey CurrentUser = RegistryKey.GetBaseKey(RegistryKey.HKEY_CURRENT_USER);
/**
* Local Machine Key.
*
* This key should be used as the root for all machine specific settings.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey LocalMachine = RegistryKey.GetBaseKey(RegistryKey.HKEY_LOCAL_MACHINE);
/**
* Classes Root Key.
*
* This is the root key of class information.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey ClassesRoot = RegistryKey.GetBaseKey(RegistryKey.HKEY_CLASSES_ROOT);
/**
* Users Root Key.
*
* This is the root of users.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey Users = RegistryKey.GetBaseKey(RegistryKey.HKEY_USERS);
/**
* Performance Root Key.
*
* This is where dynamic performance data is stored on NT.
* This does not exist on Win9X.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey PerformanceData = RegistryKey.GetBaseKey(RegistryKey.HKEY_PERFORMANCE_DATA);
/**
* Current Config Root Key.
*
* This is where current configuration information is stored.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey CurrentConfig = RegistryKey.GetBaseKey(RegistryKey.HKEY_CURRENT_CONFIG);
/**
* Dynamic Data Root Key.
*
* This is where dynamic performance data is stored on Win9X.
* This does not exist on NT.
*/
[ResourceExposure(ResourceScope.Machine)]
public static readonly RegistryKey DynData = RegistryKey.GetBaseKey(RegistryKey.HKEY_DYN_DATA);
//
// Following function will parse a keyName and returns the basekey for it.
// It will also store the subkey name in the out parameter.
// If the keyName is not valid, we will throw ArgumentException.
// The return value shouldn't be null.
//
private static RegistryKey GetBaseKeyFromKeyName(string keyName, out string subKeyName) {
if( keyName == null) {
throw new ArgumentNullException("keyName");
}
string basekeyName;
int i = keyName.IndexOf('\\');
if( i != -1) {
basekeyName = keyName.Substring(0, i).ToUpper(System.Globalization.CultureInfo.InvariantCulture);
}
else {
basekeyName = keyName.ToUpper(System.Globalization.CultureInfo.InvariantCulture);
}
RegistryKey basekey = null;
switch(basekeyName) {
case "HKEY_CURRENT_USER":
basekey = Registry.CurrentUser;
break;
case "HKEY_LOCAL_MACHINE":
basekey = Registry.LocalMachine;
break;
case "HKEY_CLASSES_ROOT":
basekey = Registry.ClassesRoot;
break;
case "HKEY_USERS":
basekey = Registry.Users;
break;
case "HKEY_PERFORMANCE_DATA":
basekey = Registry.PerformanceData;
break;
case "HKEY_CURRENT_CONFIG":
basekey = Registry.CurrentConfig;
break;
case "HKEY_DYN_DATA":
basekey = Registry.DynData;
break;
default:
throw new ArgumentException(Environment.GetResourceString("Arg_RegInvalidKeyName", "keyName"));
}
if( i == -1 || i == keyName.Length) {
subKeyName = string.Empty;
}
else {
subKeyName = keyName.Substring(i + 1, keyName.Length - i - 1);
}
return basekey;
}
[ResourceExposure(ResourceScope.Machine)]
[ResourceConsumption(ResourceScope.Machine)]
public static object GetValue(string keyName, string valueName, object defaultValue ) {
string subKeyName;
RegistryKey basekey = GetBaseKeyFromKeyName(keyName, out subKeyName);
BCLDebug.Assert(basekey != null, "basekey can't be null.");
RegistryKey key = basekey.OpenSubKey(subKeyName);
if(key == null) { // if the key doesn't exist, do nothing
return null;
}
try {
return key.GetValue(valueName, defaultValue);
}
finally {
key.Close();
}
}
[ResourceExposure(ResourceScope.Machine)]
[ResourceConsumption(ResourceScope.Machine)]
public static void SetValue(string keyName, string valueName, object value ) {
SetValue(keyName, valueName, value, RegistryValueKind.Unknown);
}
[ResourceExposure(ResourceScope.Machine)]
[ResourceConsumption(ResourceScope.Machine)]
public static void SetValue(string keyName, string valueName, object value, RegistryValueKind valueKind ) {
string subKeyName;
RegistryKey basekey = GetBaseKeyFromKeyName(keyName, out subKeyName);
BCLDebug.Assert(basekey != null, "basekey can't be null!");
RegistryKey key = basekey.CreateSubKey(subKeyName);
BCLDebug.Assert(key != null, "An exception should be thrown if failed!");
try {
key.SetValue(valueName, value, valueKind);
}
finally {
key.Close();
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ServicePointManagerElement.cs
- InternalsVisibleToAttribute.cs
- LinkedResource.cs
- Mappings.cs
- _AutoWebProxyScriptWrapper.cs
- HiddenField.cs
- DependencyObjectType.cs
- ExpressionPrefixAttribute.cs
- NavigatorOutput.cs
- ConversionContext.cs
- Root.cs
- AuthenticationModuleElement.cs
- DataSysAttribute.cs
- UrlPath.cs
- CommandField.cs
- RootDesignerSerializerAttribute.cs
- MouseActionConverter.cs
- Point.cs
- ComplexTypeEmitter.cs
- Timer.cs
- PersonalizationDictionary.cs
- SchemaSetCompiler.cs
- ContainerCodeDomSerializer.cs
- TypeDescriptionProvider.cs
- QueryStringConverter.cs
- SortFieldComparer.cs
- TickBar.cs
- NameTable.cs
- RegexBoyerMoore.cs
- Decorator.cs
- COM2ICategorizePropertiesHandler.cs
- XmlBinaryReader.cs
- TextModifierScope.cs
- CurrencyWrapper.cs
- DefaultTraceListener.cs
- AnnotationDocumentPaginator.cs
- SqlComparer.cs
- XmlCompatibilityReader.cs
- Transaction.cs
- Selection.cs
- QilReference.cs
- BreakSafeBase.cs
- WebScriptEnablingElement.cs
- PenCursorManager.cs
- JsonCollectionDataContract.cs
- WebHeaderCollection.cs
- DocumentGrid.cs
- DataListDesigner.cs
- ObjectStateManagerMetadata.cs
- TaskResultSetter.cs
- TrustLevelCollection.cs
- Tablet.cs
- DataGridCellClipboardEventArgs.cs
- UriTemplateClientFormatter.cs
- DataSourceDescriptorCollection.cs
- DetailsViewRow.cs
- ConnectionProviderAttribute.cs
- PngBitmapDecoder.cs
- XmlAtomicValue.cs
- ValidatedControlConverter.cs
- Switch.cs
- HtmlTableRowCollection.cs
- SingleAnimationUsingKeyFrames.cs
- IRCollection.cs
- EngineSiteSapi.cs
- WrappedIUnknown.cs
- PropertyValueChangedEvent.cs
- CryptoStream.cs
- WindowsFormsHostPropertyMap.cs
- CharUnicodeInfo.cs
- RootBrowserWindow.cs
- TemplatePagerField.cs
- DBDataPermission.cs
- MouseOverProperty.cs
- CollectionEditorDialog.cs
- Error.cs
- XmlSchemaImport.cs
- storepermission.cs
- TcpWorkerProcess.cs
- BookmarkWorkItem.cs
- HtmlTable.cs
- Memoizer.cs
- BreadCrumbTextConverter.cs
- TabControl.cs
- BufferedGraphicsContext.cs
- CounterCreationDataCollection.cs
- XsdBuilder.cs
- mediaeventshelper.cs
- OutputCacheProfile.cs
- MetadataCache.cs
- TargetParameterCountException.cs
- PolicyLevel.cs
- Image.cs
- TabItem.cs
- HexParser.cs
- ContentWrapperAttribute.cs
- BrowsableAttribute.cs
- DynamicValidator.cs
- ContentValidator.cs
- IndentedTextWriter.cs