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();
}
}
}
}
Related examples in the same category