mirror of https://github.com/dahall/Vanara.git
52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
using System;
|
|
using Microsoft.Win32;
|
|
|
|
namespace Vanara.Windows.Shell
|
|
{
|
|
internal static class RegistryExtensions
|
|
{
|
|
private const string improbableValue = "_aVery1mprobable*Value";
|
|
|
|
public static RegistryKey CreateSubKey(this RegistryKey key, string subkey, string defaultValue)
|
|
{
|
|
var sk = key.CreateSubKey(subkey);
|
|
if (defaultValue != null)
|
|
sk?.SetValue(null, defaultValue);
|
|
return sk;
|
|
}
|
|
|
|
public static bool DeleteAllSubItems(this RegistryKey key)
|
|
{
|
|
var succeeded = true;
|
|
foreach (var n in key.GetSubKeyNames())
|
|
try { key.DeleteSubKeyTree(n); } catch { succeeded = false; }
|
|
foreach (var n in key.GetValueNames())
|
|
key.DeleteValue(n);
|
|
return succeeded;
|
|
}
|
|
|
|
public static Guid? GetGuidValue(this RegistryKey key, string name)
|
|
{
|
|
var g = key?.GetValue(name)?.ToString();
|
|
return g != null ? new Guid(g) : (Guid?)null;
|
|
}
|
|
|
|
public static object GetSubKeyDefaultValue(this RegistryKey key, string subkey)
|
|
{
|
|
using (var sk = key.OpenSubKey(subkey))
|
|
return sk?.GetValue(null);
|
|
}
|
|
|
|
public static bool HasSubKey(this RegistryKey key, string subkeyName)
|
|
{
|
|
using (var sk = key.OpenSubKey(subkeyName))
|
|
return sk != null;
|
|
}
|
|
|
|
public static bool HasValue(this RegistryKey key, string name) => !Equals(key.GetValue(name, improbableValue), improbableValue);
|
|
|
|
public static string ToRegString(this Guid guid) => guid.ToString("B").ToUpperInvariant();
|
|
|
|
public static string ToRegString(this Guid? guid) => guid.HasValue ? guid.Value.ToRegString() : null;
|
|
}
|
|
} |