Example #1
0
        /// <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
                });
            }
        }
Example #2
0
        /// <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));
            }
        }