Mega Code Archive

 
Categories / C# / Development Class
 

Writes a Registry value to the Registry

//----------------------------------------------------------------------- // <copyright file="Utility.cs" company="ParanoidMike"> //     Copyright (c) ParanoidMike. All rights reserved. // </copyright> //----------------------------------------------------------------------- namespace ParanoidMike {     using System;     using System.Diagnostics;     using System.IO;     using System.Runtime.Serialization.Formatters.Binary;     using Microsoft.Win32;     /// <summary>     /// Reusable functions for many uses.     /// </summary>     public static class Utility     {         #region Variables         /// <summary>         /// Variable for the HKCU hive, to be used with functions that use the RegistryKey class.         /// </summary>         private static RegistryKey hkcu = Registry.CurrentUser;         /// <summary>         /// Variable for the HKLM hive, to be used with functions that use the RegistryKey class.         /// </summary>         private static RegistryKey hklm = Registry.LocalMachine;         /// <summary>         /// Variable for identifying the major version of the Operating System.         /// </summary>         private static int osVersion = -1; // contains os major version number         #endregion         /// <summary>         /// Writes a Registry value to the Registry.         /// </summary>         /// <param name="userHive">         /// Specifies whether to write to the HKCU hive:         /// - if True, writes to HKCU         /// - if False, writes to HKLM         /// </param>         /// <param name="subKey">         /// The relative path (within the specified hive) to the Registry Key where the value is found.         /// </param>         /// <param name="valueName">         /// The Registry value whose data is written.         /// </param>         /// <param name="valueData">         /// The data to be written to the specified Registry value.         /// </param>         public static void SetRegistryValue(             bool   userHive,              string subKey,              string valueName,              byte[] valueData)         {             RegistryKey registrySubKey;             // Note - don't forget to set writeable = True anytime you're going to write to the Registry.  How embarrassing to miss this for two days!             if (userHive)             {                 registrySubKey = hkcu.OpenSubKey(subKey, true);             }             else             {                 registrySubKey = hklm.OpenSubKey(subKey, true);             }             registrySubKey.SetValue(                 valueName,                  valueData,                  RegistryValueKind.Binary);             registrySubKey.Close();             if (userHive)             {                 hkcu.Close();             }             else             {                 hklm.Close();             }         }     } }