From cd1c5a8c90846ba08404a45fc1561beb811afbf0 Mon Sep 17 00:00:00 2001 From: Sleepydragn1 Date: Wed, 3 Oct 2018 06:43:40 -0500 Subject: [PATCH 1/4] Fixed crash on startup by implementing check to see if a given registry value exists. --- .../Controller/NvidiaController.cs | 5 ++++- .../Model/TaskNotFoundException.cs | 2 +- .../Model/TelemetryRegistryKey.cs | 21 +++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/DisableNvidiaTelemetry/Controller/NvidiaController.cs b/DisableNvidiaTelemetry/Controller/NvidiaController.cs index 68c60ab..9d00642 100644 --- a/DisableNvidiaTelemetry/Controller/NvidiaController.cs +++ b/DisableNvidiaTelemetry/Controller/NvidiaController.cs @@ -120,7 +120,10 @@ public static IEnumerable> Enumerat error = ex; } - yield return new NvidiaControllerResult(telemetryRegistryKey, error) {Name = key.Name}; + if (key.exists()) + yield return new NvidiaControllerResult(telemetryRegistryKey, error) { Name = key.Name }; + else + yield return new NvidiaControllerResult(null, new RegistryKeyNotFoundException($"Failed to find registry key: {key.Name}")); } } diff --git a/DisableNvidiaTelemetry/Model/TaskNotFoundException.cs b/DisableNvidiaTelemetry/Model/TaskNotFoundException.cs index 8abebe1..1dec875 100644 --- a/DisableNvidiaTelemetry/Model/TaskNotFoundException.cs +++ b/DisableNvidiaTelemetry/Model/TaskNotFoundException.cs @@ -3,7 +3,7 @@ namespace DisableNvidiaTelemetry.Model { /// - /// Represents an exception where a secheduled task could not be found. + /// Represents an exception where a scheduled task could not be found. /// public class TaskNotFoundException : Exception { diff --git a/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs b/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs index 577c9ee..4598906 100644 --- a/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs +++ b/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs @@ -127,6 +127,27 @@ public Replacement(Regex regex, string replacment) public string Replacment { get; } } + /// Check to see if the value exists. + /// True if it exists, false if not. + public bool exists() + { + var subKey = SubKey; + + try + { + if (_useRegex) + ValueExpressions.Select(vd => vd.Value.Match.IsMatch(subKey.GetValue(vd.Key).ToString())).FirstOrDefault(); + else + ValueStrings.Any(vd => subKey.GetValue(vd.Key).ToString() == vd.Value.Enabled); + } + catch (System.NullReferenceException) + { + return false; + } + + return true; + } + #region Implementation of ITelemetry public bool IsActive() From a0e0c1d3cf3c7ca833f7b7ddf53b1ac504620c29 Mon Sep 17 00:00:00 2001 From: Sleepydragn1 Date: Wed, 3 Oct 2018 07:04:13 -0500 Subject: [PATCH 2/4] Forgot to include csproj, hopefully this fixes the AppVeyor check on the pull request... --- DisableNvidiaTelemetry/DisableNvidiaTelemetry.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/DisableNvidiaTelemetry/DisableNvidiaTelemetry.csproj b/DisableNvidiaTelemetry/DisableNvidiaTelemetry.csproj index 189e1d7..8bcd0c7 100644 --- a/DisableNvidiaTelemetry/DisableNvidiaTelemetry.csproj +++ b/DisableNvidiaTelemetry/DisableNvidiaTelemetry.csproj @@ -102,6 +102,7 @@ + From 5197de9e05cb15e80fef3d0c84899859b098c51d Mon Sep 17 00:00:00 2001 From: Sleepydragn1 Date: Wed, 3 Oct 2018 07:27:45 -0500 Subject: [PATCH 3/4] Included a missing file that should've been obvious, thus fixing the check... --- .../Model/RegistryKeyNotFoundException.cs | 16 ++++++++++++++++ .../Model/TelemetryRegistryKey.cs | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 DisableNvidiaTelemetry/Model/RegistryKeyNotFoundException.cs diff --git a/DisableNvidiaTelemetry/Model/RegistryKeyNotFoundException.cs b/DisableNvidiaTelemetry/Model/RegistryKeyNotFoundException.cs new file mode 100644 index 0000000..fa06255 --- /dev/null +++ b/DisableNvidiaTelemetry/Model/RegistryKeyNotFoundException.cs @@ -0,0 +1,16 @@ +using System; + +namespace DisableNvidiaTelemetry.Model +{ + /// Represents an exception where a registry key could not be found. + public class RegistryKeyNotFoundException : Exception + { + public RegistryKeyNotFoundException() + { + } + + public RegistryKeyNotFoundException(string message) : base(message) + { + } + } +} \ No newline at end of file diff --git a/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs b/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs index 4598906..bb33e6e 100644 --- a/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs +++ b/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs @@ -158,8 +158,8 @@ public bool IsActive() return false; return _useRegex - ? ValueExpressions.Select(vd => vd.Value.Match.IsMatch(subKey.GetValue(vd.Key).ToString())).FirstOrDefault() - : ValueStrings.Any(vd => subKey.GetValue(vd.Key).ToString() == vd.Value.Enabled); + ? ValueExpressions.Select(vd => vd.Value.Match.IsMatch(subKey.GetValue(vd.Key).ToString())).FirstOrDefault() + : ValueStrings.Any(vd => subKey.GetValue(vd.Key).ToString() == vd.Value.Enabled); } public bool RestartRequired { get; set; } From f1e4291a8260cc2cce8d01b7dc331654d9cfbb6e Mon Sep 17 00:00:00 2001 From: Sleepydragn1 Date: Sat, 6 Oct 2018 00:09:02 -0500 Subject: [PATCH 4/4] Re-tabbed a couple of lines. --- DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs b/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs index bb33e6e..4598906 100644 --- a/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs +++ b/DisableNvidiaTelemetry/Model/TelemetryRegistryKey.cs @@ -158,8 +158,8 @@ public bool IsActive() return false; return _useRegex - ? ValueExpressions.Select(vd => vd.Value.Match.IsMatch(subKey.GetValue(vd.Key).ToString())).FirstOrDefault() - : ValueStrings.Any(vd => subKey.GetValue(vd.Key).ToString() == vd.Value.Enabled); + ? ValueExpressions.Select(vd => vd.Value.Match.IsMatch(subKey.GetValue(vd.Key).ToString())).FirstOrDefault() + : ValueStrings.Any(vd => subKey.GetValue(vd.Key).ToString() == vd.Value.Enabled); } public bool RestartRequired { get; set; }