diff --git a/mRemoteNG/Tools/WindowsRegistry/IRegistry.cs b/mRemoteNG/Tools/WindowsRegistry/IRegistry.cs
index c79aeae3d..0bf2da86c 100644
--- a/mRemoteNG/Tools/WindowsRegistry/IRegistry.cs
+++ b/mRemoteNG/Tools/WindowsRegistry/IRegistry.cs
@@ -15,7 +15,9 @@ namespace mRemoteNG.Tools.WindowsRegistry
string[] GetSubKeyNames(RegistryHive hive, string path);
string GetPropertyValue(WindowsRegistryKey key);
string GetPropertyValue(RegistryHive hive, string path, string name);
+
bool GetBoolValue(RegistryHive hive, string path, string propertyName, bool defaultValue = false);
+ int GetDwordValue(RegistryHive hive, string path, string propertyName, int defaultValue = 0);
WindowsRegistryKey GetWindowsRegistryKey(RegistryHive hive, string path, string name);
WindowsRegistryKey GetWindowsRegistryKey(WindowsRegistryKey key);
diff --git a/mRemoteNG/Tools/WindowsRegistry/IRegistryAdvanced.cs b/mRemoteNG/Tools/WindowsRegistry/IRegistryAdvanced.cs
index 6cab5cc52..649601105 100644
--- a/mRemoteNG/Tools/WindowsRegistry/IRegistryAdvanced.cs
+++ b/mRemoteNG/Tools/WindowsRegistry/IRegistryAdvanced.cs
@@ -2,7 +2,6 @@
using System;
using System.Collections.Generic;
using System.Runtime.Versioning;
-using static mRemoteNG.Config.Settings.Registry.RegistryController;
namespace mRemoteNG.Tools.WindowsRegistry
{
@@ -17,6 +16,9 @@ namespace mRemoteNG.Tools.WindowsRegistry
string GetPropertyValue(WindowsRegistryKey key);
string GetPropertyValue(RegistryHive hive, string path, string name);
+ bool GetBoolValue(RegistryHive hive, string path, string propertyName, bool defaultValue = false);
+ int GetDwordValue(RegistryHive hive, string path, string propertyName, int defaultValue = 0);
+
WindowsRegistryKey GetWindowsRegistryKey(RegistryHive hive, string path, string name);
WindowsRegistryKey GetWindowsRegistryKey(WindowsRegistryKey key);
diff --git a/mRemoteNG/Tools/WindowsRegistry/IRegistryAdvancedRead.cs b/mRemoteNG/Tools/WindowsRegistry/IRegistryAdvancedRead.cs
index ac9df6744..8d865e179 100644
--- a/mRemoteNG/Tools/WindowsRegistry/IRegistryAdvancedRead.cs
+++ b/mRemoteNG/Tools/WindowsRegistry/IRegistryAdvancedRead.cs
@@ -2,7 +2,6 @@
using System;
using System.Collections.Generic;
using System.Runtime.Versioning;
-using static mRemoteNG.Config.Settings.Registry.RegistryController;
namespace mRemoteNG.Tools.WindowsRegistry
{
@@ -17,6 +16,9 @@ namespace mRemoteNG.Tools.WindowsRegistry
string GetPropertyValue(WindowsRegistryKey key);
string GetPropertyValue(RegistryHive hive, string path, string name);
+ bool GetBoolValue(RegistryHive hive, string path, string propertyName, bool defaultValue = false);
+ int GetDwordValue(RegistryHive hive, string path, string propertyName, int defaultValue = 0);
+
WindowsRegistryKey GetWindowsRegistryKey(RegistryHive hive, string path, string name);
WindowsRegistryKey GetWindowsRegistryKey(WindowsRegistryKey key);
diff --git a/mRemoteNG/Tools/WindowsRegistry/IRegistryRead.cs b/mRemoteNG/Tools/WindowsRegistry/IRegistryRead.cs
index 356ba368f..28b5d1423 100644
--- a/mRemoteNG/Tools/WindowsRegistry/IRegistryRead.cs
+++ b/mRemoteNG/Tools/WindowsRegistry/IRegistryRead.cs
@@ -13,10 +13,11 @@ namespace mRemoteNG.Tools.WindowsRegistry
{
#region registry reader
string[] GetSubKeyNames(RegistryHive hive, string path);
-
string GetPropertyValue(WindowsRegistryKey key);
string GetPropertyValue(RegistryHive hive, string path, string name);
+
bool GetBoolValue(RegistryHive hive, string path, string propertyName, bool defaultValue = false);
+ int GetDwordValue(RegistryHive hive, string path, string propertyName, int defaultValue = 0);
WindowsRegistryKey GetWindowsRegistryKey(RegistryHive hive, string path, string name);
WindowsRegistryKey GetWindowsRegistryKey(WindowsRegistryKey key);
diff --git a/mRemoteNG/Tools/WindowsRegistry/WindowsRegistry.cs b/mRemoteNG/Tools/WindowsRegistry/WindowsRegistry.cs
index 9899adf7c..954bc415a 100644
--- a/mRemoteNG/Tools/WindowsRegistry/WindowsRegistry.cs
+++ b/mRemoteNG/Tools/WindowsRegistry/WindowsRegistry.cs
@@ -100,6 +100,26 @@ namespace mRemoteNG.Tools.WindowsRegistry
return defaultValue;
}
+ //
+ /// Retrieves a DWORD value from the Windows Registry, with an optional default value.
+ ///
+ /// The Registry hive to access.
+ /// The Registry path containing the key.
+ /// The name of the Registry property.
+ /// The default value to return if the property is not found or cannot be parsed.
+ /// The DWORD value from the Registry, or the specified default value.
+ public int GetDwordValue(RegistryHive hive, string path, string propertyName, int defaultValue = 0)
+ {
+ var value = GetPropertyValue(hive, path, propertyName);
+
+ if (int.TryParse(value, out int intValue))
+ {
+ return intValue;
+ }
+
+ return defaultValue;
+ }
+
///
/// Retrieves a WindowsRegistryKey object for a specific registry hive, path, and value name.
///
diff --git a/mRemoteNGTests/Tools/Registry/WindowsRegistryAdvancedTests.cs b/mRemoteNGTests/Tools/Registry/WindowsRegistryAdvancedTests.cs
index 820a11b32..093822354 100644
--- a/mRemoteNGTests/Tools/Registry/WindowsRegistryAdvancedTests.cs
+++ b/mRemoteNGTests/Tools/Registry/WindowsRegistryAdvancedTests.cs
@@ -113,6 +113,13 @@ namespace mRemoteNGTests.Tools.Registry
Assert.That(key.IsKeyPresent, Is.EqualTo(false));
});
}
+
+ [Test]
+ public void GetDwordValue_returnIntegerValue()
+ {
+ int value = GetDwordValue(_TestHive, _TestRootKey, "TestInteger");
+ Assert.That(value, Is.EqualTo(4711));
+ }
#endregion
#region GetString()