├── Deploy ├── Installer │ ├── Icon.ico │ ├── License.txt │ ├── nsis.ps1 │ └── Installer.nsi └── Portable │ └── portable.ps1 ├── DisableNvidiaTelemetry ├── Icon.ico ├── Resources │ ├── bg.png │ ├── binoculars-256.png │ ├── honeycomb-dark.png │ ├── honeycomb-gray.png │ ├── btn_donate_92x26.png │ └── GitHub-Mark-Light-120px-plus.png ├── Model │ ├── ITelemetry.cs │ ├── TaskNotFoundException.cs │ ├── TelemetryTask.cs │ ├── TelemetryService.cs │ └── TelemetryRegistryKey.cs ├── packages.config ├── Controller │ ├── NvidiaControllerResult.cs │ └── NvidiaController.cs ├── Utilities │ ├── WindowsUtils.cs │ ├── AppUtils.cs │ ├── TaskSchedulerUtilities.cs │ ├── GeforceUtilities.cs │ ├── UpdaterUtilities.cs │ ├── Logging.cs │ └── ServiceHelper.cs ├── Properties │ ├── Settings.settings │ ├── AssemblyInfo.cs │ ├── Settings.Designer.cs │ ├── Resources.resx │ └── Resources.Designer.cs ├── SwitchCheckbox.cs ├── MarginSetter.cs ├── View │ ├── TelemetryControl.xaml │ └── TelemetryControl.xaml.cs ├── App.config ├── app.manifest ├── App.xaml.cs ├── DisableNvidiaTelemetry.csproj ├── PortableSettingsProvider.cs ├── MainWindow.xaml.cs └── MainWindow.xaml ├── .gitmodules ├── .gitattributes ├── appveyor.yml ├── DisableNvidiaTelemetry.sln ├── README.md └── .gitignore /Deploy/Installer/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NateShoffner/Disable-Nvidia-Telemetry/HEAD/Deploy/Installer/Icon.ico -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NateShoffner/Disable-Nvidia-Telemetry/HEAD/DisableNvidiaTelemetry/Icon.ico -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Resources/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NateShoffner/Disable-Nvidia-Telemetry/HEAD/DisableNvidiaTelemetry/Resources/bg.png -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Deploy/Installer/NsisDotNetChecker"] 2 | path = Deploy/Installer/NsisDotNetChecker 3 | url = https://github.com/ReVolly/NsisDotNetChecker.git 4 | -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Resources/binoculars-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NateShoffner/Disable-Nvidia-Telemetry/HEAD/DisableNvidiaTelemetry/Resources/binoculars-256.png -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Resources/honeycomb-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NateShoffner/Disable-Nvidia-Telemetry/HEAD/DisableNvidiaTelemetry/Resources/honeycomb-dark.png -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Resources/honeycomb-gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NateShoffner/Disable-Nvidia-Telemetry/HEAD/DisableNvidiaTelemetry/Resources/honeycomb-gray.png -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Resources/btn_donate_92x26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NateShoffner/Disable-Nvidia-Telemetry/HEAD/DisableNvidiaTelemetry/Resources/btn_donate_92x26.png -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Resources/GitHub-Mark-Light-120px-plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NateShoffner/Disable-Nvidia-Telemetry/HEAD/DisableNvidiaTelemetry/Resources/GitHub-Mark-Light-120px-plus.png -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Model/ITelemetry.cs: -------------------------------------------------------------------------------- 1 | namespace DisableNvidiaTelemetry.Model 2 | { 3 | public interface ITelemetry 4 | { 5 | bool RestartRequired { get; set; } 6 | bool IsActive(); 7 | } 8 | } -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /Deploy/Installer/License.txt: -------------------------------------------------------------------------------- 1 | Copyright (C) 2018 Nate Shoffner 2 | 3 | This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. 4 | 5 | Redistribution of this software is allowed, but the origin of this software must not be misrepresented; you must not claim that you wrote the original software. 6 | 7 | E-mail: nate.shoffner@gmail.com 8 | Homepage: https://nateshoffner.com -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Model/TaskNotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace DisableNvidiaTelemetry.Model 4 | { 5 | /// 6 | /// Represents an exception where a secheduled task could not be found. 7 | /// 8 | public class TaskNotFoundException : Exception 9 | { 10 | public TaskNotFoundException() 11 | { 12 | } 13 | 14 | public TaskNotFoundException(string message) : base(message) 15 | { 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Model/TelemetryTask.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32.TaskScheduler; 2 | 3 | namespace DisableNvidiaTelemetry.Model 4 | { 5 | internal class TelemetryTask : ITelemetry 6 | { 7 | public TelemetryTask(Task task) 8 | { 9 | Task = task; 10 | } 11 | 12 | public Task Task { get; } 13 | 14 | #region Implementation of ITelemetry 15 | 16 | public bool RestartRequired { get; set; } 17 | 18 | public bool IsActive() 19 | { 20 | return Task != null && Task.Enabled; 21 | } 22 | 23 | #endregion 24 | } 25 | } -------------------------------------------------------------------------------- /Deploy/Installer/nsis.ps1: -------------------------------------------------------------------------------- 1 | & git clone "https://github.com/ReVolly/NsisDotNetChecker" "$env:APPVEYOR_BUILD_FOLDER\Deploy\Installer\NsisDotNetChecker" 2>&1 | % { $_.ToString() } 2 | 3 | & "C:\Program Files (x86)\NSIS\makensis.exe" /DAPPLICATION_VERSION="$env:APPVEYOR_BUILD_VERSION" /DSOLUTION_DIRECTORY="$env:APPVEYOR_BUILD_FOLDER" "$env:APPVEYOR_BUILD_FOLDER\Deploy\Installer\Installer.nsi" 4 | 5 | $installer = "$env:APPVEYOR_BUILD_FOLDER\Deploy\Installer\Disable Nvidia Telemetry $env:APPVEYOR_BUILD_VERSION Setup.exe" 6 | 7 | # move executable to project directory for clean AppVeyor artifact name 8 | Move-Item "$installer" "$env:APPVEYOR_BUILD_FOLDER" -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Controller/NvidiaControllerResult.cs: -------------------------------------------------------------------------------- 1 | #region 2 | 3 | using System; 4 | using DisableNvidiaTelemetry.Model; 5 | 6 | #endregion 7 | 8 | namespace DisableNvidiaTelemetry.Controller 9 | { 10 | public class NvidiaControllerResult where T : ITelemetry 11 | { 12 | public NvidiaControllerResult(T item, Exception error = null) 13 | { 14 | Item = item; 15 | Error = error; 16 | } 17 | 18 | public bool Modified { get; set; } 19 | 20 | public Exception Error { get; } 21 | 22 | public T Item { get; } 23 | 24 | public string Name { get; set; } 25 | } 26 | } -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Utilities/WindowsUtils.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | 3 | namespace DisableNvidiaTelemetry.Utilities 4 | { 5 | internal class WindowsUtils 6 | { 7 | public static void Restart() 8 | { 9 | StartShutDown("-f -r -t 5"); 10 | } 11 | 12 | private static void StartShutDown(string param) 13 | { 14 | var proc = new ProcessStartInfo 15 | { 16 | FileName = "cmd", 17 | WindowStyle = ProcessWindowStyle.Hidden, 18 | Arguments = "/C shutdown " + param 19 | }; 20 | 21 | Process.Start(proc); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Model/TelemetryService.cs: -------------------------------------------------------------------------------- 1 | using System.ServiceProcess; 2 | 3 | namespace DisableNvidiaTelemetry.Model 4 | { 5 | internal class TelemetryService : ITelemetry 6 | { 7 | public TelemetryService(ServiceController service) 8 | { 9 | Service = service; 10 | } 11 | 12 | public ServiceController Service { get; } 13 | 14 | #region Implementation of ITelemetry 15 | 16 | public bool RestartRequired { get; set; } 17 | 18 | public bool IsActive() 19 | { 20 | return Service != null && Service.Status == ServiceControllerStatus.Running; 21 | } 22 | 23 | #endregion 24 | } 25 | } -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | version: 1.2.0.{build} 2 | os: Visual Studio 2017 3 | configuration: Release 4 | platform: Any CPU 5 | install: 6 | - choco install nsis -y --ignore-checksums 7 | assembly_info: 8 | patch: true 9 | file: AssemblyInfo.* 10 | assembly_version: "{version}" 11 | assembly_file_version: "{version}" 12 | assembly_informational_version: "{version}-$(APPVEYOR_REPO_COMMIT)" 13 | before_build: 14 | - ps: nuget restore 15 | build: 16 | project: DisableNvidiaTelemetry.sln 17 | after_build: 18 | - ps: >- 19 | .\Deploy\Installer\nsis.ps1 20 | - ps: >- 21 | .\Deploy\Portable\portable.ps1 22 | artifacts: 23 | - path: "*Setup.exe" 24 | name: installer 25 | - path: "*Portable.exe" 26 | name: portable -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | True 9 | 10 | 11 | 0 12 | 13 | 14 | True 15 | 16 | 17 | -------------------------------------------------------------------------------- /Deploy/Portable/portable.ps1: -------------------------------------------------------------------------------- 1 | $temp_directory = "$env:APPVEYOR_BUILD_FOLDER\Deploy\Portable\~TEMP" 2 | New-Item "$temp_directory" -type directory 3 | 4 | $zip_archive = "$env:APPVEYOR_BUILD_FOLDER\Deploy\Portable\Disable Nvidia Telemetry $env:APPVEYOR_BUILD_VERSION Portable.exe" 5 | 6 | # build using portable configuration 7 | & msbuild.exe "$env:APPVEYOR_BUILD_FOLDER\DisableNvidiaTelemetry.sln" /p:Configuration=Portable 8 | 9 | $output_directory = "$env:APPVEYOR_BUILD_FOLDER\DisableNvidiaTelemetry\bin\Portable" 10 | 11 | # copy files 12 | Get-ChildItem -Path "$output_directory" | % { 13 | Copy-Item $_.fullname "$temp_directory" -Force -Exclude @("*.xml", "*.pdb", "*.manifest", "*.application", "*.vshost.*", "JetBrains.Annotations.dll") 14 | } 15 | 16 | # zip contents in self-extracting archive 17 | & 7z "a" "$zip_archive" "-mmt" "-mx5" "-sfx7z.sfx" "-r" "$temp_directory\*.*" 18 | 19 | # move executable to project directory for clean AppVeyor artifact name 20 | Move-Item "$zip_archive" "$env:APPVEYOR_BUILD_FOLDER" -------------------------------------------------------------------------------- /DisableNvidiaTelemetry.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26228.9 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DisableNvidiaTelemetry", "DisableNvidiaTelemetry\DisableNvidiaTelemetry.csproj", "{96BD5143-61F8-4B32-A6DD-8125A4EFE8AA}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Portable|Any CPU = Portable|Any CPU 12 | Release|Any CPU = Release|Any CPU 13 | EndGlobalSection 14 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 15 | {96BD5143-61F8-4B32-A6DD-8125A4EFE8AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 16 | {96BD5143-61F8-4B32-A6DD-8125A4EFE8AA}.Debug|Any CPU.Build.0 = Debug|Any CPU 17 | {96BD5143-61F8-4B32-A6DD-8125A4EFE8AA}.Portable|Any CPU.ActiveCfg = Portable|Any CPU 18 | {96BD5143-61F8-4B32-A6DD-8125A4EFE8AA}.Portable|Any CPU.Build.0 = Portable|Any CPU 19 | {96BD5143-61F8-4B32-A6DD-8125A4EFE8AA}.Release|Any CPU.ActiveCfg = Release|Any CPU 20 | {96BD5143-61F8-4B32-A6DD-8125A4EFE8AA}.Release|Any CPU.Build.0 = Release|Any CPU 21 | EndGlobalSection 22 | GlobalSection(SolutionProperties) = preSolution 23 | HideSolutionNode = FALSE 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/SwitchCheckbox.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using DisableNvidiaTelemetry.Properties; 3 | 4 | namespace DisableNvidiaTelemetry 5 | { 6 | internal class SwitchCheckbox 7 | { 8 | public static readonly DependencyProperty EnabledTextProperty = 9 | DependencyProperty.RegisterAttached("EnabledText", typeof(string), typeof(SwitchCheckbox), new PropertyMetadata(Resources.Enabled)); 10 | 11 | public static readonly DependencyProperty DisabledTextProperty = 12 | DependencyProperty.RegisterAttached("DisabledText", typeof(string), typeof(SwitchCheckbox), new PropertyMetadata(Resources.Disabled)); 13 | 14 | public static void SetEnabledText(UIElement element, string value) 15 | { 16 | element.SetValue(EnabledTextProperty, value); 17 | } 18 | 19 | public static string GetEnabledText(UIElement element) 20 | { 21 | return (string) element.GetValue(EnabledTextProperty); 22 | } 23 | 24 | public static void SetDisabledText(UIElement element, string value) 25 | { 26 | element.SetValue(DisabledTextProperty, value); 27 | } 28 | 29 | public static string GetDisabledText(UIElement element) 30 | { 31 | return (string) element.GetValue(DisabledTextProperty); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Disable Nvidia Telemetry 2 | ==================== 3 | 4 | [![Build status](https://ci.appveyor.com/api/projects/status/ehusy6jle2om8t3g/branch/master?svg=true)](https://ci.appveyor.com/project/NateShoffner/disable-nvidia-telemetry/branch/master) 5 | 6 | Disable Nvidia Telemetry is a utility that allows you to disable the telemetry services Nvidia bundles with their drivers. 7 | 8 | ### Download ### 9 | 10 | ![Github All Releases]( https://img.shields.io/github/downloads/nateshoffner/disable-nvidia-telemetry/total.svg) 11 | 12 | [Click here to download v1.2 Installer / Portable Versions](https://github.com/NateShoffner/Disable-Nvidia-Telemetry/releases/1.2) 13 | 14 | ![](https://i.imgur.com/cqOmSGW.png) 15 | 16 | ### License ### 17 | 18 | Copyright 2018 Nate Shoffner 19 | 20 | Licensed under the Apache License, Version 2.0 (the "License"); 21 | you may not use this file except in compliance with the License. 22 | You may obtain a copy of the License at 23 | 24 | http://www.apache.org/licenses/LICENSE-2.0 25 | 26 | Unless required by applicable law or agreed to in writing, software 27 | distributed under the License is distributed on an "AS IS" BASIS, 28 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 29 | See the License for the specific language governing permissions and 30 | limitations under the License. 31 | 32 | Icon originally made by freepik from www.flaticon.com 33 | 34 | [![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RGQ8NSYPA59FL) -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Utilities/AppUtils.cs: -------------------------------------------------------------------------------- 1 | using System.Configuration; 2 | using System.Linq; 3 | using System.Reflection; 4 | using System.Security.Principal; 5 | using DisableNvidiaTelemetry.Properties; 6 | 7 | namespace DisableNvidiaTelemetry.Utilities 8 | { 9 | public class AppUtils 10 | { 11 | public const string StartupParamSilent = "-silent"; 12 | public const string StartupParamRegisterTask = "-registertask"; 13 | public const string StartupParamUnregisterTask = "-unregistertask"; 14 | 15 | 16 | public static ExtendedVersion.ExtendedVersion GetVersion() 17 | { 18 | var attribute = 19 | (AssemblyInformationalVersionAttribute) Assembly.GetExecutingAssembly() 20 | .GetCustomAttributes(typeof(AssemblyInformationalVersionAttribute), false).FirstOrDefault(); 21 | var version = new ExtendedVersion.ExtendedVersion(attribute.InformationalVersion); 22 | 23 | return version; 24 | } 25 | 26 | public static void InitializeSettings() 27 | { 28 | Settings.Default.Upgrade(); 29 | var provider = new PortableSettingsProvider(); 30 | Settings.Default.Providers.Add(provider); 31 | foreach (SettingsProperty property in Settings.Default.Properties) 32 | { 33 | property.Provider = provider; 34 | } 35 | } 36 | 37 | public static bool IsAdministrator() 38 | { 39 | return new WindowsPrincipal(WindowsIdentity.GetCurrent()) 40 | .IsInRole(WindowsBuiltInRole.Administrator); 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/MarginSetter.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | using System.Windows.Controls; 3 | 4 | namespace DisableNvidiaTelemetry 5 | { 6 | public class MarginSetter 7 | { 8 | // Using a DependencyProperty as the backing store for Margin. This enables animation, styling, binding, etc... 9 | public static readonly DependencyProperty MarginProperty = 10 | DependencyProperty.RegisterAttached("Margin", typeof(Thickness), typeof(MarginSetter), new UIPropertyMetadata(new Thickness(), CreateThicknesForChildren)); 11 | 12 | public static Thickness GetMargin(DependencyObject obj) 13 | { 14 | return (Thickness) obj.GetValue(MarginProperty); 15 | } 16 | 17 | public static void SetMargin(DependencyObject obj, Thickness value) 18 | { 19 | obj.SetValue(MarginProperty, value); 20 | } 21 | 22 | public static void CreateThicknesForChildren(object sender, DependencyPropertyChangedEventArgs e) 23 | { 24 | var panel = sender as Panel; 25 | 26 | if (panel == null) return; 27 | 28 | foreach (var child in panel.Children) 29 | { 30 | var fe = child as FrameworkElement; 31 | 32 | if (fe == null) continue; 33 | 34 | // preserve any possible margins defined locally 35 | var currentMargin = fe.Margin; // new Thickness(fe.Margin.Left, fe.Margin.Top, fe.Margin.Right, fe.Margin.Bottom); 36 | var definedMargin = GetMargin(panel); 37 | 38 | var newMargin = new Thickness(currentMargin.Left + definedMargin.Left, 39 | currentMargin.Top + definedMargin.Top, 40 | currentMargin.Right + definedMargin.Right, 41 | currentMargin.Bottom + definedMargin.Bottom); 42 | 43 | fe.Margin = GetMargin(panel); 44 | } 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/View/TelemetryControl.xaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | 14 | 38 | -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Utilities/TaskSchedulerUtilities.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using System.Security.Principal; 4 | using DisableNvidiaTelemetry.Properties; 5 | using Microsoft.Win32.TaskScheduler; 6 | 7 | namespace DisableNvidiaTelemetry.Utilities 8 | { 9 | internal class TaskSchedulerUtilities 10 | { 11 | public enum TaskTrigger 12 | { 13 | WindowsLogin = 0, 14 | Daily = 1 15 | } 16 | 17 | public static Task GetTask() 18 | { 19 | return TaskService.Instance.FindTask(Resources.Disable_Nvidia_Telemetry); 20 | } 21 | 22 | public static void Create(TaskTrigger trigger) 23 | { 24 | var user = WindowsIdentity.GetCurrent().Name; 25 | 26 | using (var ts = new TaskService()) 27 | { 28 | var td = ts.NewTask(); 29 | td.RegistrationInfo.Description = Resources.Task_scheduler_description; 30 | td.Principal.UserId = user; 31 | td.Principal.LogonType = TaskLogonType.InteractiveToken; 32 | td.Principal.RunLevel = TaskRunLevel.Highest; 33 | if (trigger == TaskTrigger.WindowsLogin) 34 | td.Triggers.Add(new LogonTrigger()); 35 | if (trigger == TaskTrigger.Daily) 36 | { 37 | var now = DateTime.Today; 38 | var startDateTime = new DateTime(now.Year, now.Month, now.Day, 12, 0, 0); 39 | var dt = new DailyTrigger 40 | { 41 | StartBoundary = startDateTime, 42 | Enabled = true, 43 | DaysInterval = 1, 44 | Repetition = {Interval = TimeSpan.FromHours(24)} 45 | }; 46 | 47 | td.Triggers.Add(dt); 48 | } 49 | td.Actions.Add(new ExecAction(Assembly.GetExecutingAssembly().Location, AppUtils.StartupParamSilent)); 50 | ts.RootFolder.RegisterTaskDefinition(Resources.Disable_Nvidia_Telemetry, td); 51 | } 52 | } 53 | 54 | public static void Remove() 55 | { 56 | using (var ts = new TaskService()) 57 | { 58 | ts.RootFolder.DeleteTask(Resources.Disable_Nvidia_Telemetry, false); 59 | } 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Disable Nvidia Telemetry")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Nate Shoffner")] 12 | [assembly: AssemblyProduct("Disable Nvidia Telemetry")] 13 | [assembly: AssemblyCopyright("Copyright © Nate Shoffner 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | //In order to begin building localizable applications, set 23 | //CultureYouAreCodingWith in your .csproj file 24 | //inside a . For example, if you are using US english 25 | //in your source files, set the to en-US. Then uncomment 26 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 27 | //the line below to match the UICulture setting in the project file. 28 | 29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 30 | 31 | 32 | [assembly: ThemeInfo( 33 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 34 | //(used if a resource is not found in the page, 35 | // or application resource dictionaries) 36 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 37 | //(used if a resource is not found in the page, 38 | // app, or any theme specific resource dictionaries) 39 | )] 40 | 41 | 42 | // Version information for an assembly consists of the following four values: 43 | // 44 | // Major Version 45 | // Minor Version 46 | // Build Number 47 | // Revision 48 | // 49 | // You can specify all the values or you can default the Build and Revision Numbers 50 | // by using the '*' as shown below: 51 | // [assembly: AssemblyVersion("1.0.*")] 52 | [assembly: AssemblyVersion("1.2.0.0")] 53 | [assembly: AssemblyFileVersion("1.2.0.0")] 54 | [assembly: AssemblyInformationalVersion("1.2.0.0")] -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Utilities/GeforceUtilities.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using Microsoft.Win32; 4 | 5 | namespace DisableNvidiaTelemetry.Utilities 6 | { 7 | internal class GeforceUtilities 8 | { 9 | public static string GetGeforceExperiencePath() 10 | { 11 | using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)) 12 | 13 | using (var key = hklm.OpenSubKey(@"SOFTWARE\NVIDIA Corporation\Global\GFExperience")) 14 | { 15 | if (key != null) 16 | { 17 | var path = key.GetValue("FullPath"); 18 | 19 | if (path != null) 20 | return path.ToString(); 21 | } 22 | } 23 | 24 | return null; 25 | } 26 | 27 | public static ExtendedVersion.ExtendedVersion GetGeForceExperienceVersion() 28 | { 29 | return GetApplicationVersion("NVIDIA GeForce Experience"); 30 | } 31 | 32 | public static ExtendedVersion.ExtendedVersion GetDriverVersion() 33 | { 34 | return GetApplicationVersion("NVIDIA Graphics Driver"); 35 | } 36 | 37 | private static ExtendedVersion.ExtendedVersion GetApplicationVersion(string displayNamePrefix) 38 | { 39 | using (var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)) 40 | 41 | using (var key = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")) 42 | { 43 | foreach (var subkey_name in key.GetSubKeyNames()) 44 | { 45 | using (var subkey = key.OpenSubKey(subkey_name)) 46 | { 47 | var name = subkey.GetValue("DisplayName"); 48 | 49 | if (name != null) 50 | { 51 | var nameStr = name.ToString(); 52 | 53 | if (!string.IsNullOrEmpty(nameStr)) 54 | if (nameStr.IndexOf(displayNamePrefix, StringComparison.InvariantCultureIgnoreCase) >= 0) 55 | { 56 | var split = nameStr.Split(' '); 57 | var versionStr = split.Last(); 58 | 59 | return new ExtendedVersion.ExtendedVersion(versionStr); 60 | } 61 | } 62 | } 63 | } 64 | } 65 | 66 | return null; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace DisableNvidiaTelemetry.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.0.1.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("True")] 29 | public bool StartupUpdate { 30 | get { 31 | return ((bool)(this["StartupUpdate"])); 32 | } 33 | set { 34 | this["StartupUpdate"] = value; 35 | } 36 | } 37 | 38 | [global::System.Configuration.UserScopedSettingAttribute()] 39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 40 | [global::System.Configuration.DefaultSettingValueAttribute("0")] 41 | public int BackgroundTaskTrigger { 42 | get { 43 | return ((int)(this["BackgroundTaskTrigger"])); 44 | } 45 | set { 46 | this["BackgroundTaskTrigger"] = value; 47 | } 48 | } 49 | 50 | [global::System.Configuration.UserScopedSettingAttribute()] 51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 52 | [global::System.Configuration.DefaultSettingValueAttribute("True")] 53 | public bool FileLogging { 54 | get { 55 | return ((bool)(this["FileLogging"])); 56 | } 57 | set { 58 | this["FileLogging"] = value; 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /DisableNvidiaTelemetry/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 | 8 |
11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
26 | 27 |