# Visual Studio Telemetry Disable Tool [![PowerShell](https://img.shields.io/badge/PowerShell-5.1%20%7C%207.0%2B-blue)](https://github.com/PowerShell/PowerShell) [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) ![Windows](https://img.shields.io/badge/Windows-7%2F8%2F10%2F11-blue.svg) ![Preview](./assets/preview.gif) A comprehensive PowerShell-based tool to disable telemetry and data collection across Microsoft development tools including Visual Studio, Visual Studio Code, .NET CLI, and NuGet. ## 🚀 Features - **Comprehensive Coverage**: Disables telemetry for Visual Studio 2015-2022, VS Code, .NET CLI, and NuGet - **Backup & Restore**: Create registry backups before making changes and restore when needed - **Smart Detection**: Only modifies existing registry paths - doesn't create unnecessary entries - **PowerShell 7 Optimized**: Enhanced performance and modern PowerShell features - **Administrator Safety**: Requires admin privileges and validates permissions - **Cross-Version Support**: Works with PowerShell 5.1 and 7.0+ - **Detailed Logging**: Color-coded output with comprehensive status reporting ## 📋 What Gets Disabled ### Visual Studio (2015-2022) - Customer Experience Improvement Program (CEIP) - Feedback dialogs and crash reporting - Automatic data collection - VS Standard Collector Service ### Visual Studio Code - Telemetry reporting - Crash reporter - Automatic experiments - Extension auto-updates - Usage analytics ### .NET CLI & NuGet - .NET CLI telemetry collection - NuGet package usage analytics - Performance data collection ### System-Wide - Windows SQM (Software Quality Metrics) Client - Application Insights data collection - Telemetry directories cleanup ## 🛠️ Prerequisites - Windows operating system - Administrator privileges - PowerShell 5.1 or PowerShell 7.0+ ## 📦 Installation 1. **Download the tool:** ```bash git clone https://github.com/your-username/vs-telemetry-disable.git cd vs-telemetry-disable ``` 2. **Or download as ZIP:** - Click "Code" → "Download ZIP" - Extract to your desired location ## 🚀 Usage ### Quick Start 1. **Right-click on `Launcher.bat`** and select **"Run as administrator"** 2. Follow the interactive prompts 3. The launcher will automatically detect your PowerShell version and run the appropriate script ### Command Line Usage #### Basic Usage (Disable telemetry) ```powershell # PowerShell 7 .\script\off_telemetry_ps7.ps1 # PowerShell 5 .\script\off_telemetry_ps5.ps1 ``` #### Create Backup First (Recommended) ```powershell # Create backup before making changes .\script\off_telemetry_ps7.ps1 -CreateBackup # Create backup to specific location .\script\off_telemetry_ps7.ps1 -CreateBackup -BackupPath "C:\MyBackups\telemetry_backup.reg" ``` #### Restore from Backup ```powershell # Restore from default backup location .\script\off_telemetry_ps7.ps1 -RestoreBackup -BackupPath "path\to\your\backup.reg" ``` ### Advanced Usage Examples ```powershell # Create backup and continue with telemetry disable .\script\off_telemetry_ps7.ps1 -CreateBackup # Restore specific backup file .\script\off_telemetry_ps7.ps1 -RestoreBackup -BackupPath "C:\Backups\telemetry_backup_20241201_143022.reg" # Create backup to custom location without running disable .\script\off_telemetry_ps7.ps1 -CreateBackup -BackupPath "D:\MyBackups\vs_telemetry.reg" ``` ## 📁 Project Structure ``` vs-telemetry-disable/ ├── Launcher.bat # Interactive launcher script ├── assets/ │ └── preview.gif # Tool demonstration ├── script/ │ ├── off_telemetry_ps7.ps1 # PowerShell 7.0+ version │ └── off_telemetry_ps5.ps1 # PowerShell 5.1 version ├── README.md # This file ├── LICENSE # MIT License └── .gitignore # Git ignore rules ``` ## 🔧 How It Works ### Detection Process 1. **PowerShell Version Detection**: Launcher automatically detects available PowerShell versions 2. **Registry Path Validation**: Only existing registry paths are modified 3. **Service Management**: Safely stops and disables telemetry services 4. **Environment Variables**: Sets opt-out environment variables 5. **File Cleanup**: Removes existing telemetry data directories ### Registry Modifications The tool modifies the following registry areas (only if they exist): - `HKLM:\SOFTWARE\Microsoft\VSCommon\*\SQM` - `HKLM:\SOFTWARE\Policies\Microsoft\VisualStudio` - `HKCU:\Software\Microsoft\VisualStudio` - `HKLM:\SOFTWARE\Microsoft\SQMClient` ### Environment Variables Set - `DOTNET_CLI_TELEMETRY_OPTOUT=1` - `NUGET_TELEMETRY_OPTOUT=true` - `POWERSHELL_TELEMETRY_OPTOUT=1` ## ⚠️ Important Notes - **Administrator Rights Required**: The script must run with administrator privileges - **Backup Recommended**: Always create a backup before making changes - **Restart Required**: Some changes may require a system restart to take full effect - **Existing Paths Only**: The script only modifies existing registry entries - **VS Code Settings**: Creates/updates VS Code settings.json with privacy-focused configuration ## 🔄 Backup & Restore ### Creating Backups ```powershell # Default backup location (Desktop with timestamp) .\script\off_telemetry_ps7.ps1 -CreateBackup # Custom backup location .\script\off_telemetry_ps7.ps1 -CreateBackup -BackupPath "C:\Backups\my_backup.reg" ``` ### Restoring Backups ```powershell # Restore from backup .\script\off_telemetry_ps7.ps1 -RestoreBackup -BackupPath "path\to\backup.reg" ``` Backup files are standard Windows Registry (.reg) files that can be imported manually if needed. ## 🆘 Troubleshooting ### Common Issues **"This script must be run as Administrator"** - Right-click the batch file and select "Run as administrator" - Or run PowerShell as administrator and execute the script directly **"PowerShell script not found"** - Ensure the `script` folder contains the PowerShell files - Check that file paths are correct **"No compatible PowerShell version found"** - Install PowerShell 7 (recommended) or ensure Windows PowerShell 5.1 is available ### Verification To verify the changes worked: 1. Check environment variables in a new command prompt 2. Look for disabled services in Services.msc 3. Check VS Code settings.json for updated privacy settings 4. Review registry entries (if comfortable with registry editing) ## 🤝 Contributing Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change. ### Development Setup 1. Fork the repository 2. Create a feature branch (`git checkout -b feature/amazing-feature`) 3. Make your changes 4. Test on both PowerShell 5.1 and 7.0+ 5. Commit your changes (`git commit -m 'Add amazing feature'`) 6. Push to the branch (`git push origin feature/amazing-feature`) 7. Open a Pull Request ## 📄 License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## ⚡ Author **EXLOUD** ## 🙏 Acknowledgments - Microsoft for providing comprehensive documentation on registry settings - PowerShell community for best practices and patterns - Contributors and users who provide feedback and improvements ## 📊 Compatibility | Component | Status | Notes | |-----------|--------|-------| | Visual Studio 2015 | ✅ Supported | If installed | | Visual Studio 2017 | ✅ Supported | If installed | | Visual Studio 2019 | ✅ Supported | If installed | | Visual Studio 2022 | ✅ Supported | If installed | | Visual Studio Code | ✅ Supported | If installed | | .NET CLI | ✅ Supported | Always processed | | NuGet | ✅ Supported | Always processed | | PowerShell 5.1 | ✅ Supported | Windows PowerShell | | PowerShell 7.0+ | ✅ Supported | Recommended | ## 🔮 Roadmap - [ ] GUI interface for easier usage - [ ] Support for additional Microsoft development tools - [ ] Scheduled telemetry cleanup - [ ] Configuration profiles for different scenarios - [ ] Integration with package managers --- **⭐ If this tool helped you, please consider giving it a star!**