/// <summary> /// Returns an enumerable collection of telemetry registry items. /// </summary> public static IEnumerable <NvidiaControllerResult <TelemetryRegistryKey> > EnumerateTelemetryRegistryItems() { var keys = new List <TelemetryRegistryKey> { new TelemetryRegistryKey(Registry.CurrentUser, @"SOFTWARE\NVIDIA Corporation\NvControlPanel2\Client", new Dictionary <string, TelemetryRegistryKey.RegistryValuePair> { { "OptInOrOutPreference", new TelemetryRegistryKey.RegistryValuePair("1", "0") } }), new TelemetryRegistryKey(Registry.LocalMachine, @"SYSTEM\CurrentControlSet\Services\NvContainerLocalSystem", new Dictionary <string, TelemetryRegistryKey.RegistryExpressionModifiers> { { "ImagePath", new TelemetryRegistryKey.RegistryExpressionModifiers( new Regex(@"-st ""(.*)\\NVIDIA Corporation\\NvContainer\\NvContainerTelemetryApi.dll""$", RegexOptions.Compiled), new TelemetryRegistryKey.Replacement( new Regex(@"""(.*)\\NVIDIA Corporation\\NvContainer\\nvcontainer.exe""(.*)$", RegexOptions.Compiled), @"""$1\NVIDIA Corporation\NvContainer\nvcontainer.exe""$2 -st ""$1\NVIDIA Corporation\NvContainer\NvContainerTelemetryApi.dll"""), new TelemetryRegistryKey.Replacement( new Regex(@"(.*) -st ""(.*)\\NVIDIA Corporation\\NvContainer\\NvContainerTelemetryApi.dll""$", RegexOptions.Compiled), "$1")) } }) { RestartRequired = true } }; foreach (var key in keys) { TelemetryRegistryKey telemetryRegistryKey = null; Exception error = null; try { // attempt to enter subkey var subKey = key.SubKey; telemetryRegistryKey = key; if (subKey == null) { throw new NullReferenceException(); } } catch (Exception ex) { error = ex; } yield return(new NvidiaControllerResult <TelemetryRegistryKey>(telemetryRegistryKey, error) { Name = key.Name }); } }
/// <summary> /// Enables the provided registry key and its respective value(s). /// </summary> /// <param name="key">The registry key in which to enable.</param> public static NvidiaControllerResult <TelemetryRegistryKey> EnableTelemetryRegistryItem(TelemetryRegistryKey key) { try { var modified = false; if (!key.IsActive()) { key.Enabled = true; modified = true; } return(new NvidiaControllerResult <TelemetryRegistryKey>(key) { Modified = modified }); } catch (Exception ex) { return(new NvidiaControllerResult <TelemetryRegistryKey>(key, ex)); } }