diff --git a/W10DebloaterGUI.ps1 b/W10DebloaterGUI.ps1 new file mode 100644 index 00000000..fa66c3ee --- /dev/null +++ b/W10DebloaterGUI.ps1 @@ -0,0 +1,390 @@ +<# This form was created using POSHGUI.com a free online gui designer for PowerShell +.NAME + Untitled +#> + +#This will self elevate the script so with a UAC prompt since this script needs to be run as an Administrator in order to function properly. + +<#$ErrorActionPreference = 'SilentlyContinue' + +$Button = [System.Windows.MessageBoxButton]::YesNoCancel +$ErrorIco = [System.Windows.MessageBoxImage]::Error +$Ask = 'Do you want to run this as an Administrator? + + Select "Yes" to Run as an Administrator + + Select "No" to not run this as an Administrator + + Select "Cancel" to stop the script.' + +If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) { + $Prompt = [System.Windows.MessageBox]::Show($Ask, "Run as an Administrator or not?", $Button, $ErrorIco) + Switch ($Prompt) { + #This will debloat Windows 10 + Yes { + Write-Host "You didn't run this script as an Administrator. This script will self elevate to run as an Administrator and continue." + Start-Process PowerShell.exe -ArgumentList ("-NoProfile -ExecutionPolicy Bypass -File `"{0}`"" -f $PSCommandPath) -Verb RunAs + Exit + } + No { + Break + } + } +}#> + +$DebloatFolder = "C:\Temp\Windows10Debloater" +If (Test-Path $DebloatFolder) { + Write-Host "${DebloatFolder} exists." +} +Else { + Write-Host "The folder ${DebloatFolder} doesn't exist. This folder will be used for storing logs created after the script runs. Creating now." + Start-Sleep 1 + New-Item -Path "${DebloatFolder}" -ItemType Directory + Write-Host "The folder ${DebloatFolder} was successfully created." +} + +Start-Transcript -OutputDirectory "${DebloatFolder}" + +Add-Type -AssemblyName System.Windows.Forms +Add-Type -AssemblyName PresentationCore, PresentationFramework +[System.Windows.Forms.Application]::EnableVisualStyles() + +$Form = New-Object system.Windows.Forms.Form +$Form.ClientSize = '875,616' +$Form.text = "Windows 10 Debloater" +$Form.TopMost = $false + +$ListBox1 = New-Object system.Windows.Forms.ListBox +$ListBox1.text = "listBox" +$ListBox1.width = 300 +$ListBox1.height = 494 +$ListBox1.location = New-Object System.Drawing.Point(3, 116) +$ListBox1.SelectionMode = 'MultiExtended' + + +$TextBox1 = New-Object system.Windows.Forms.RichTextBox +$TextBox1.multiline = $True +$TextBox1.width = 535 +$TextBox1.height = 400 +$TextBox1.location = New-Object System.Drawing.Point(325, 200) +$TextBox1.Font = 'Microsoft Sans Serif,10' + + +$Button1 = New-Object system.Windows.Forms.Button +$Button1.text = "Uninstall" +$Button1.width = 80 +$Button1.height = 30 +$Button1.location = New-Object System.Drawing.Point(5, 80) +$Button1.Font = 'Microsoft Sans Serif,10' + +$Button2 = New-Object system.Windows.Forms.Button +$Button2.text = "Apply Checkbox Changes" +$Button2.width = 175 +$Button2.height = 30 +$Button2.location = New-Object System.Drawing.Point(685, 165) +$Button2.Font = 'Microsoft Sans Serif,10' + +$Label1 = New-Object system.Windows.Forms.Label +$Label1.text = "-----------------------------------------------------------------------------------------------------------------" +$Label1.AutoSize = $true +$Label1.width = 50 +$Label1.height = 10 +$Label1.location = New-Object System.Drawing.Point(305, 108) +$Label1.Font = New-Object System.Drawing.Font('Microsoft Sans Serif', 10) + +$CheckBox1 = New-Object system.Windows.Forms.CheckBox +$CheckBox1.text = "Enable Cortana" +$CheckBox1.AutoSize = $false +$CheckBox1.width = 125 +$CheckBox1.height = 20 +$CheckBox1.location = New-Object System.Drawing.Point(325, 175) +$CheckBox1.Font = New-Object System.Drawing.Font('Microsoft Sans Serif', 10) + +$CheckBox2 = New-Object system.Windows.Forms.CheckBox +$CheckBox2.text = "Disable Cortana" +$CheckBox2.AutoSize = $false +$CheckBox2.width = 125 +$CheckBox2.height = 20 +$CheckBox2.location = New-Object System.Drawing.Point(325, 150) +$CheckBox2.Font = New-Object System.Drawing.Font('Microsoft Sans Serif', 10) + +$CheckBox3 = New-Object system.Windows.Forms.CheckBox +$CheckBox3.text = "Uninstall OneDrive" +$CheckBox3.AutoSize = $false +$CheckBox3.width = 140 +$CheckBox3.height = 20 +$CheckBox3.location = New-Object System.Drawing.Point(475, 150) +$CheckBox3.Font = New-Object System.Drawing.Font('Microsoft Sans Serif', 10) + +$CheckBox4 = New-Object system.Windows.Forms.CheckBox +$CheckBox4.text = "Unpin Tiles From Start Menu" +$CheckBox4.AutoSize = $false +$CheckBox4.width = 200 +$CheckBox4.height = 20 +$CheckBox4.location = New-Object System.Drawing.Point(475, 175) +$CheckBox4.Font = New-Object System.Drawing.Font('Microsoft Sans Serif', 10) + + +$Form.controls.AddRange(@($ListBox1, $Button1, $Button2, $TextBox1, $CustomizeBlacklists, $CustomizeForm, $SaveList, $CustomizeBlacklists, $Checkbox1, $Checkbox2, $CheckBox3, $CheckBox4, $Label1)) + +$global:Bloatware = @( + "Microsoft.PPIProjection" + "Microsoft.BingNews" + "Microsoft.GetHelp" + "Microsoft.Getstarted" + "Microsoft.Messaging" + "Microsoft.Microsoft3DViewer" + "Microsoft.MicrosoftOfficeHub" + "Microsoft.MicrosoftSolitaireCollection" + "Microsoft.NetworkSpeedTest" + "Microsoft.News" # Issue 77 + "Microsoft.Office.Lens" # Issue 77 + "Microsoft.Office.OneNote" + "Microsoft.Office.Sway" + "Microsoft.OneConnect" + "Microsoft.People" + "Microsoft.Print3D" + "Microsoft.RemoteDesktop" # Issue 120 + "Microsoft.SkypeApp" + "Microsoft.StorePurchaseApp" + "Microsoft.Office.Todo.List" # Issue 77 + "Microsoft.Whiteboard" # Issue 77 + "Microsoft.WindowsAlarms" + "microsoft.windowscommunicationsapps" + "Microsoft.WindowsFeedbackHub" + "Microsoft.WindowsMaps" + "Microsoft.WindowsSoundRecorder" + "Microsoft.Xbox.TCUI" + "Microsoft.XboxApp" + "Microsoft.XboxGameOverlay" + "Microsoft.XboxGamingOverlay" + "Microsoft.XboxIdentityProvider" + "Microsoft.XboxSpeechToTextOverlay" + "Microsoft.ZuneMusic" + "Microsoft.ZuneVideo" + + #Sponsored Windows 10 AppX Apps + #Add sponsored/featured apps to remove in the "*AppName*" format + "EclipseManager" + "ActiproSoftwareLLC" + "AdobeSystemsIncorporated.AdobePhotoshopExpress" + "Duolingo-LearnLanguagesforFree" + "PandoraMediaInc" + "CandyCrush" + "BubbleWitch3Saga" + "Wunderlist" + "Flipboard" + "Twitter" + "Facebook" + "Spotify" # Issue 123 + "Minecraft" + "Royal Revolt" + "Sway" # Issue 77 + "Dolby" # Issue 78 + + #Optional: Typically not removed but you can if you need to for some reason + #"Microsoft.Advertising.Xaml_10.1712.5.0_x64__8wekyb3d8bbwe" + #"Microsoft.Advertising.Xaml_10.1712.5.0_x86__8wekyb3d8bbwe" + #"Microsoft.BingWeather" +) + +#$Windows10AppsFolder = Get-Item -path "C:\Program Files\WindowsApps\*" +foreach ($Bloat in $Bloatware) { + + #$Apps = $App.Trim("C:\Program Files\WindowsApps\") + $ListBox1.Items.Add($Bloat) + $ListBox1.Sorted = $True + +} + +$Button = [Windows.MessageBoxButton]::YesNoCancel +$ErrorIco = [Windows.MessageBoxImage]::Error +$Warn = [Windows.MessageBoxImage]::Warning + +$Ask = 'Do you want to create a System Restore Point? + Select "Yes" to create a System Restore Point + Select "No" to not create a System Restore Point + + Select "Cancel" to stop the script.' + + +$SelectedBloatware = $ListBox1.SelectedItems +$Button1.Add_Click( { + +$Prompt1 = [Windows.MessageBox]::Show($Ask, "Create a System Restore Point?", $Button, $ErrorIco) +Switch ($Prompt1) { + Yes { +$TextBox1.AppendText("Creating System Restore point. Please wait... + +") +Checkpoint-Computer -Description "Before using W10DebloaterGUI.ps1" -Verbose + + + + ForEach ($Selected in $SelectedBloatware) { + $TextBox1.AppendText("Trying to remove $Selected... +") + + Try { + If (Test-Path "C:\Program Files\WindowsApps\*$Selected*") { + Get-AppxPackage | Where-Object { ($_.Name -match $Selected) } | Remove-AppxPackage + Get-AppxProvisionedPackage -Online | Where-Object { ($_.Name -match $Selected) } | Remove-AppxProvisionedPackage -Online + Get-AppxPackage -AllUsers | Where-Object { ($_.Name -match $Selected) } | Remove-AppxPackage + + $TextBox1.AppendText("Successfully removed $Selected! + +") + } + Else { + + If (!(Test-Path "C:\Program Files\WindowsApps\*$Selected*")) { + $TextBox1.AppendText("$Selected doesn't exist on this machine! + +") + } + + } + + } + + Catch { + $TextBox1.AppendText("$_") + + } + } + + } + + No { + + Break + + } + } +} ) + + +$Button2.Add_Click( { + + If ($CheckBox1.Checked) { + + $Textbox1.AppendText("Re-enabling Cortana to be used in your Windows Search") + $Search = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" + If (Test-Path $Search) { + Set-ItemProperty $Search AllowCortana -Value 1 + } + + } + + If ($CheckBox2.Checked) { + + Write-Host "Stopping Cortana from being used as part of your Windows Search Function" + $Search = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search' + If (Test-Path $Search) { + Set-ItemProperty $Search AllowCortana -Value 0 + } + } + + If ($CheckBox3.Checked) { + + $RemoveOnedrive.Add_Click( { + If (Test-Path "$env:USERPROFILE\OneDrive\*") { + Write-Host "Files found within the OneDrive folder! Checking to see if a folder named OneDriveBackupFiles exists." + Start-Sleep 1 + + If (Test-Path "$env:USERPROFILE\Desktop\OneDriveBackupFiles") { + Write-Host "A folder named OneDriveBackupFiles already exists on your desktop. All files from your OneDrive location will be moved to that folder." + } + else { + If (!(Test-Path "$env:USERPROFILE\Desktop\OneDriveBackupFiles")) { + Write-Host "A folder named OneDriveBackupFiles will be created and will be located on your desktop. All files from your OneDrive location will be located in that folder." + New-item -Path "$env:USERPROFILE\Desktop" -Name "OneDriveBackupFiles"-ItemType Directory -Force + Write-Host "Successfully created the folder 'OneDriveBackupFiles' on your desktop." + } + } + Start-Sleep 1 + Move-Item -Path "$env:USERPROFILE\OneDrive\*" -Destination "$env:USERPROFILE\Desktop\OneDriveBackupFiles" -Force + Write-Host "Successfully moved all files/folders from your OneDrive folder to the folder 'OneDriveBackupFiles' on your desktop." + Start-Sleep 1 + Write-Host "Proceeding with the removal of OneDrive." + Start-Sleep 1 + } + Else { + Write-Host "Either the OneDrive folder does not exist or there are no files to be found in the folder. Proceeding with removal of OneDrive." + Start-Sleep 1 + Write-Host "Enabling the Group Policy 'Prevent the usage of OneDrive for File Storage'." + $OneDriveKey = 'HKLM:Software\Policies\Microsoft\Windows\OneDrive' + If (!(Test-Path $OneDriveKey)) { + Mkdir $OneDriveKey + Set-ItemProperty $OneDriveKey -Name OneDrive -Value DisableFileSyncNGSC + } + Set-ItemProperty $OneDriveKey -Name OneDrive -Value DisableFileSyncNGSC + } + + Write-Host "Uninstalling OneDrive. Please wait..." + + New-PSDrive HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT + $onedrive = "$env:SYSTEMROOT\SysWOW64\OneDriveSetup.exe" + $ExplorerReg1 = "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" + $ExplorerReg2 = "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" + Stop-Process -Name "OneDrive*" + Start-Sleep 2 + If (!(Test-Path $onedrive)) { + $onedrive = "$env:SYSTEMROOT\System32\OneDriveSetup.exe" + } + Start-Process $onedrive "/uninstall" -NoNewWindow -Wait + Start-Sleep 2 + Write-Host "Stopping explorer" + Start-Sleep 1 + taskkill.exe /F /IM explorer.exe + Start-Sleep 3 + Write-Host "Removing leftover files" + If (Test-Path "$env:USERPROFILE\OneDrive") { + Remove-Item "$env:USERPROFILE\OneDrive" -Force -Recurse + } + If (Test-Path "$env:LOCALAPPDATA\Microsoft\OneDrive") { + Remove-Item "$env:LOCALAPPDATA\Microsoft\OneDrive" -Force -Recurse + } + If (Test-Path "$env:PROGRAMDATA\Microsoft OneDrive") { + Remove-Item "$env:PROGRAMDATA\Microsoft OneDrive" -Force -Recurse + } + If (Test-Path "$env:SYSTEMDRIVE\OneDriveTemp") { + Remove-Item "$env:SYSTEMDRIVE\OneDriveTemp" -Force -Recurse + } + Write-Host "Removing OneDrive from windows explorer" + If (!(Test-Path $ExplorerReg1)) { + New-Item $ExplorerReg1 + } + Set-ItemProperty $ExplorerReg1 System.IsPinnedToNameSpaceTree -Value 0 + If (!(Test-Path $ExplorerReg2)) { + New-Item $ExplorerReg2 + } + Set-ItemProperty $ExplorerReg2 System.IsPinnedToNameSpaceTree -Value 0 + Write-Host "Restarting Explorer that was shut down before." + Start-Process explorer.exe -NoNewWindow + Write-Host "OneDrive has been successfully uninstalled!" + + Remove-item env:OneDrive + }) + + + } + + If ($CheckBox4.Checked) { + + #Credit to Vikingat-Rage + #https://superuser.com/questions/1068382/how-to-remove-all-the-tiles-in-the-windows-10-start-menu + #Unpins all tiles from the Start Menu + Write-Host "Unpinning all tiles from the start menu" + (New-Object -Com Shell.Application). + NameSpace('shell:::{4234d49b-0245-4df3-b780-3893943456e1}'). + Items() | + % { $_.Verbs() } | + ? { $_.Name -match 'Un.*pin from Start' } | + % { $_.DoIt() } + + } + + } ) + +[void]$Form.ShowDialog() diff --git a/Windows10Debloater.ps1 b/Windows10Debloater.ps1 deleted file mode 100644 index 4cf0f397..00000000 --- a/Windows10Debloater.ps1 +++ /dev/null @@ -1,734 +0,0 @@ -#This function finds any AppX/AppXProvisioned package and uninstalls it, except for Freshpaint, Windows Calculator, Windows Store, and Windows Photos. -#Also, to note - This does NOT remove essential system services/software/etc such as .NET framework installations, Cortana, Edge, etc. - -#no errors throughout -$ErrorActionPreference = 'silentlycontinue' - -If (Test-Path "C:\Windows10Debloater") { - Write-Output "C:\Windows10Debloater exists. Skipping." -} -Else { - Write-Output "The folder 'C:\Windows10Debloater' doesn't exist. This folder will be used for storing logs created after the script runs. Creating now." - Start-Sleep 1 - New-Item -Path "C:\Windows10Debloater" -ItemType Directory - Write-Output "The folder C:\Windows10Debloater was successfully created." -} - -Start-Transcript -OutputDirectory "C:\Windows10Debloater" - -Add-Type -AssemblyName PresentationCore, PresentationFramework - -Function DebloatAll { - - [CmdletBinding()] - - Param() - - #Removes AppxPackages - #Credit to /u/GavinEke for a modified version of my whitelist code - [regex]$WhitelistedApps = 'Microsoft.ScreenSketch|Microsoft.Paint3D|Microsoft.WindowsCalculator|Microsoft.WindowsStore|Microsoft.Windows.Photos|CanonicalGroupLimited.UbuntuonWindows|Microsoft.XboxGameCallableUI|Microsoft.XboxGamingOverlay|Microsoft.Xbox.TCUI|Microsoft.XboxGamingOverlay|Microsoft.XboxIdentityProvider|Microsoft.MicrosoftStickyNotes|Microsoft.MSPaint' - Get-AppxPackage -AllUsers | Where-Object {$_.Name -NotMatch $WhitelistedApps} | Remove-AppxPackage - Get-AppxPackage | Where-Object {$_.Name -NotMatch $WhitelistedApps} | Remove-AppxPackage - Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -NotMatch $WhitelistedApps} | Remove-AppxProvisionedPackage -Online -} - -Function DebloatBlacklist { - [CmdletBinding()] - - Param () - - $Bloatware = @( - - #Unnecessary Windows 10 AppX Apps - "Microsoft.BingNews" - "Microsoft.DesktopAppInstaller" - "Microsoft.GetHelp" - "Microsoft.Getstarted" - "Microsoft.Messaging" - "Microsoft.Microsoft3DViewer" - "Microsoft.MicrosoftOfficeHub" - "Microsoft.MicrosoftSolitaireCollection" - "Microsoft.NetworkSpeedTest" - "Microsoft.Office.OneNote" - "Microsoft.Office.Sway" - "Microsoft.OneConnect" - "Microsoft.People" - "Microsoft.Print3D" - "Microsoft.RemoteDesktop" - "Microsoft.SkypeApp" - "Microsoft.StorePurchaseApp" - "Microsoft.WindowsAlarms" - "Microsoft.WindowsCamera" - "microsoft.windowscommunicationsapps" - "Microsoft.WindowsFeedbackHub" - "Microsoft.WindowsMaps" - "Microsoft.WindowsSoundRecorder" - "Microsoft.Xbox.TCUI" - "Microsoft.XboxApp" - "Microsoft.XboxGameOverlay" - "Microsoft.XboxIdentityProvider" - "Microsoft.XboxSpeechToTextOverlay" - "Microsoft.ZuneMusic" - "Microsoft.ZuneVideo" - - #Sponsored Windows 10 AppX Apps - #Add sponsored/featured apps to remove in the "*AppName*" format - "*EclipseManager*" - "*ActiproSoftwareLLC*" - "*AdobeSystemsIncorporated.AdobePhotoshopExpress*" - "*Duolingo-LearnLanguagesforFree*" - "*PandoraMediaInc*" - "*CandyCrush*" - "*Wunderlist*" - "*Flipboard*" - "*Twitter*" - "*Facebook*" - "*Spotify*" - "*Minecraft*" - "*Royal Revolt*" - - #Optional: Typically not removed but you can if you need to for some reason - #"*Microsoft.Advertising.Xaml_10.1712.5.0_x64__8wekyb3d8bbwe*" - #"*Microsoft.Advertising.Xaml_10.1712.5.0_x86__8wekyb3d8bbwe*" - #"*Microsoft.BingWeather*" - #"*Microsoft.MSPaint*" - #"*Microsoft.MicrosoftStickyNotes*" - #"*Microsoft.Windows.Photos*" - #"*Microsoft.WindowsCalculator*" - #"*Microsoft.WindowsStore*" - ) - foreach ($Bloat in $Bloatware) { - Get-AppxPackage -Name $Bloat| Remove-AppxPackage -ErrorAction SilentlyContinue - Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like $Debloat | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue - Write-Output "Trying to remove $Bloat." - } -} - -Function Remove-Keys { - - [CmdletBinding()] - - Param() - - #These are the registry keys that it will delete. - - $Keys = @( - - #Remove Background Tasks - "HKCR:\Extensions\ContractId\Windows.BackgroundTasks\PackageId\46928bounde.EclipseManager_2.2.4.51_neutral__a5h4egax66k6y" - "HKCR:\Extensions\ContractId\Windows.BackgroundTasks\PackageId\ActiproSoftwareLLC.562882FEEB491_2.6.18.18_neutral__24pqs290vpjk0" - "HKCR:\Extensions\ContractId\Windows.BackgroundTasks\PackageId\Microsoft.MicrosoftOfficeHub_17.7909.7600.0_x64__8wekyb3d8bbwe" - "HKCR:\Extensions\ContractId\Windows.BackgroundTasks\PackageId\Microsoft.PPIProjection_10.0.15063.0_neutral_neutral_cw5n1h2txyewy" - "HKCR:\Extensions\ContractId\Windows.BackgroundTasks\PackageId\Microsoft.XboxGameCallableUI_1000.15063.0.0_neutral_neutral_cw5n1h2txyewy" - "HKCR:\Extensions\ContractId\Windows.BackgroundTasks\PackageId\Microsoft.XboxGameCallableUI_1000.16299.15.0_neutral_neutral_cw5n1h2txyewy" - - #Windows File - "HKCR:\Extensions\ContractId\Windows.File\PackageId\ActiproSoftwareLLC.562882FEEB491_2.6.18.18_neutral__24pqs290vpjk0" - - #Registry keys to delete if they aren't uninstalled by RemoveAppXPackage/RemoveAppXProvisionedPackage - "HKCR:\Extensions\ContractId\Windows.Launch\PackageId\46928bounde.EclipseManager_2.2.4.51_neutral__a5h4egax66k6y" - "HKCR:\Extensions\ContractId\Windows.Launch\PackageId\ActiproSoftwareLLC.562882FEEB491_2.6.18.18_neutral__24pqs290vpjk0" - "HKCR:\Extensions\ContractId\Windows.Launch\PackageId\Microsoft.PPIProjection_10.0.15063.0_neutral_neutral_cw5n1h2txyewy" - "HKCR:\Extensions\ContractId\Windows.Launch\PackageId\Microsoft.XboxGameCallableUI_1000.15063.0.0_neutral_neutral_cw5n1h2txyewy" - "HKCR:\Extensions\ContractId\Windows.Launch\PackageId\Microsoft.XboxGameCallableUI_1000.16299.15.0_neutral_neutral_cw5n1h2txyewy" - - #Scheduled Tasks to delete - "HKCR:\Extensions\ContractId\Windows.PreInstalledConfigTask\PackageId\Microsoft.MicrosoftOfficeHub_17.7909.7600.0_x64__8wekyb3d8bbwe" - - #Windows Protocol Keys - "HKCR:\Extensions\ContractId\Windows.Protocol\PackageId\ActiproSoftwareLLC.562882FEEB491_2.6.18.18_neutral__24pqs290vpjk0" - "HKCR:\Extensions\ContractId\Windows.Protocol\PackageId\Microsoft.PPIProjection_10.0.15063.0_neutral_neutral_cw5n1h2txyewy" - "HKCR:\Extensions\ContractId\Windows.Protocol\PackageId\Microsoft.XboxGameCallableUI_1000.15063.0.0_neutral_neutral_cw5n1h2txyewy" - "HKCR:\Extensions\ContractId\Windows.Protocol\PackageId\Microsoft.XboxGameCallableUI_1000.16299.15.0_neutral_neutral_cw5n1h2txyewy" - - #Windows Share Target - "HKCR:\Extensions\ContractId\Windows.ShareTarget\PackageId\ActiproSoftwareLLC.562882FEEB491_2.6.18.18_neutral__24pqs290vpjk0" - ) - - #This writes the output of each key it is removing and also removes the keys listed above. - ForEach ($Key in $Keys) { - Write-Output "Removing $Key from registry" - Remove-Item $Key -Recurse - } -} - -Function Protect-Privacy { - - [CmdletBinding()] - - Param() - - #Disables Windows Feedback Experience - Write-Output "Disabling Windows Feedback Experience program" - $Advertising = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo" - If (Test-Path $Advertising) { - Set-ItemProperty $Advertising Enabled -Value 0 - } - - #Stops Cortana from being used as part of your Windows Search Function - Write-Output "Stopping Cortana from being used as part of your Windows Search Function" - $Search = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" - If (Test-Path $Search) { - Set-ItemProperty $Search AllowCortana -Value 0 - } - - #Disables Web Search in Start Menu - Write-Output "Disabling Bing Search in Start Menu" - $WebSearch = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" - Set-ItemProperty "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" BingSearchEnabled -Value 0 - If (!(Test-Path $WebSearch)) { - New-Item $WebSearch - } - Set-ItemProperty $WebSearch DisableWebSearch -Value 1 - - #Stops the Windows Feedback Experience from sending anonymous data - Write-Output "Stopping the Windows Feedback Experience program" - $Period = "HKCU:\Software\Microsoft\Siuf\Rules" - If (!(Test-Path $Period)) { - New-Item $Period - } - Set-ItemProperty $Period PeriodInNanoSeconds -Value 0 - - #Prevents bloatware applications from returning and removes Start Menu suggestions - Write-Output "Adding Registry key to prevent bloatware apps from returning" - $registryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" - $registryOEM = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" - If (!(Test-Path $registryPath)) { - New-Item $registryPath - } - Set-ItemProperty $registryPath DisableWindowsConsumerFeatures -Value 1 - - If (!(Test-Path $registryOEM)) { - New-Item $registryOEM - } - Set-ItemProperty $registryOEM ContentDeliveryAllowed -Value 0 - Set-ItemProperty $registryOEM OemPreInstalledAppsEnabled -Value 0 - Set-ItemProperty $registryOEM PreInstalledAppsEnabled -Value 0 - Set-ItemProperty $registryOEM PreInstalledAppsEverEnabled -Value 0 - Set-ItemProperty $registryOEM SilentInstalledAppsEnabled -Value 0 - Set-ItemProperty $registryOEM SystemPaneSuggestionsEnabled -Value 0 - - #Preping mixed Reality Portal for removal - Write-Output "Setting Mixed Reality Portal value to 0 so that you can uninstall it in Settings" - $Holo = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Holographic" - If (Test-Path $Holo) { - Set-ItemProperty $Holo FirstRunSucceeded -Value 0 - } - - #Disables Wi-fi Sense - Write-Output "Disabling Wi-Fi Sense" - $WifiSense1 = "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting" - $WifiSense2 = "HKLM:\SOFTWARE\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots" - $WifiSense3 = "HKLM:\SOFTWARE\Microsoft\WcmSvc\wifinetworkmanager\config" - If (!(Test-Path $WifiSense1)) { - New-Item $WifiSense1 - } - Set-ItemProperty $WifiSense1 Value -Value 0 - If (!(Test-Path $WifiSense2)) { - New-Item $WifiSense2 - } - Set-ItemProperty $WifiSense2 Value -Value 0 - Set-ItemProperty $WifiSense3 AutoConnectAllowedOEM -Value 0 - - #Disables live tiles - Write-Output "Disabling live tiles" - $Live = "HKCU:\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\PushNotifications" - If (!(Test-Path $Live)) { - New-Item $Live - } - Set-ItemProperty $Live NoTileApplicationNotification -Value 1 - - #Turns off Data Collection via the AllowTelemtry key by changing it to 0 - Write-Output "Turning off Data Collection" - $DataCollection1 = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" - $DataCollection2 = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" - $DataCollection3 = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Policies\DataCollection" - If (Test-Path $DataCollection1) { - Set-ItemProperty $DataCollection1 AllowTelemetry -Value 0 - } - If (Test-Path $DataCollection2) { - Set-ItemProperty $DataCollection2 AllowTelemetry -Value 0 - } - If (Test-Path $DataCollection3) { - Set-ItemProperty $DataCollection3 AllowTelemetry -Value 0 - } - - #Disabling Location Tracking - Write-Output "Disabling Location Tracking" - $SensorState = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Sensor\Overrides\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}" - $LocationConfig = "HKLM:\SYSTEM\CurrentControlSet\Services\lfsvc\Service\Configuration" - If (!(Test-Path $SensorState)) { - New-Item $SensorState - } - Set-ItemProperty $SensorState SensorPermissionState -Value 0 - If (!(Test-Path $LocationConfig)) { - New-Item $LocationConfig - } - Set-ItemProperty $LocationConfig Status -Value 0 - - #Disables People icon on Taskbar - Write-Output "Disabling People icon on Taskbar" - $People = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People" - If (!(Test-Path $People)) { - New-Item $People - } - Set-ItemProperty $People PeopleBand -Value 0 - - #Disables scheduled tasks that are considered unnecessary - Write-Output "Disabling scheduled tasks" - Get-ScheduledTask XblGameSaveTaskLogon | Disable-ScheduledTask - Get-ScheduledTask XblGameSaveTask | Disable-ScheduledTask - Get-ScheduledTask Consolidator | Disable-ScheduledTask - Get-ScheduledTask UsbCeip | Disable-ScheduledTask - Get-ScheduledTask DmClient | Disable-ScheduledTask - Get-ScheduledTask DmClientOnScenarioDownload | Disable-ScheduledTask - - Write-Output "Stopping and disabling WAP Push Service" - #Stop and disable WAP Push Service - Stop-Service "dmwappushservice" - Set-Service "dmwappushservice" -StartupType Disabled - - Write-Output "Stopping and disabling Diagnostics Tracking Service" - #Disabling the Diagnostics Tracking Service - Stop-Service "DiagTrack" - Set-Service "DiagTrack" -StartupType Disabled -} - -Function DisableCortana { - Write-Host "Disabling Cortana" - $Cortana1 = "HKCU:\SOFTWARE\Microsoft\Personalization\Settings" - $Cortana2 = "HKCU:\SOFTWARE\Microsoft\InputPersonalization" - $Cortana3 = "HKCU:\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore" - If (!(Test-Path $Cortana1)) { - New-Item $Cortana1 - } - Set-ItemProperty $Cortana1 AcceptedPrivacyPolicy -Value 0 - If (!(Test-Path $Cortana2)) { - New-Item $Cortana2 - } - Set-ItemProperty $Cortana2 RestrictImplicitTextCollection -Value 1 - Set-ItemProperty $Cortana2 RestrictImplicitInkCollection -Value 1 - If (!(Test-Path $Cortana3)) { - New-Item $Cortana3 - } - Set-ItemProperty $Cortana3 HarvestContacts -Value 0 - -} - -Function EnableCortana { - Write-Host "Re-enabling Cortana" - $Cortana1 = "HKCU:\SOFTWARE\Microsoft\Personalization\Settings" - $Cortana2 = "HKCU:\SOFTWARE\Microsoft\InputPersonalization" - $Cortana3 = "HKCU:\SOFTWARE\Microsoft\InputPersonalization\TrainedDataStore" - If (!(Test-Path $Cortana1)) { - New-Item $Cortana1 - } - Set-ItemProperty $Cortana1 AcceptedPrivacyPolicy -Value 1 - If (!(Test-Path $Cortana2)) { - New-Item $Cortana2 - } - Set-ItemProperty $Cortana2 RestrictImplicitTextCollection -Value 0 - Set-ItemProperty $Cortana2 RestrictImplicitInkCollection -Value 0 - If (!(Test-Path $Cortana3)) { - New-Item $Cortana3 - } - Set-ItemProperty $Cortana3 HarvestContacts -Value 1 -} - -Function Stop-EdgePDF { - - #Stops edge from taking over as the default .PDF viewer - Write-Output "Stopping Edge from taking over as the default .PDF viewer" - $NoPDF = "HKCR:\.pdf" - $NoProgids = "HKCR:\.pdf\OpenWithProgids" - $NoWithList = "HKCR:\.pdf\OpenWithList" - If (!(Get-ItemProperty $NoPDF NoOpenWith)) { - New-ItemProperty $NoPDF NoOpenWith - } - If (!(Get-ItemProperty $NoPDF NoStaticDefaultVerb)) { - New-ItemProperty $NoPDF NoStaticDefaultVerb - } - If (!(Get-ItemProperty $NoProgids NoOpenWith)) { - New-ItemProperty $NoProgids NoOpenWith - } - If (!(Get-ItemProperty $NoProgids NoStaticDefaultVerb)) { - New-ItemProperty $NoProgids NoStaticDefaultVerb - } - If (!(Get-ItemProperty $NoWithList NoOpenWith)) { - New-ItemProperty $NoWithList NoOpenWith - } - If (!(Get-ItemProperty $NoWithList NoStaticDefaultVerb)) { - New-ItemProperty $NoWithList NoStaticDefaultVerb - } - - #Appends an underscore '_' to the Registry key for Edge - $Edge = "HKCR:\AppXd4nrz8ff68srnhf9t5a8sbjyar1cr723_" - If (Test-Path $Edge) { - Set-Item $Edge AppXd4nrz8ff68srnhf9t5a8sbjyar1cr723_ - } -} - -Function Revert-Changes { - - [CmdletBinding()] - - Param() - - #This function will revert the changes you made when running the Start-Debloat function. - - #This line reinstalls all of the bloatware that was removed - Get-AppxPackage -AllUsers | ForEach {Add-AppxPackage -Verbose -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"} - - #Tells Windows to enable your advertising information. - Write-Output "Re-enabling key to show advertisement information" - $Advertising = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo" - If (Test-Path $Advertising) { - Set-ItemProperty $Advertising Enabled -Value 1 - } - - #Enables Cortana to be used as part of your Windows Search Function - Write-Output "Re-enabling Cortana to be used in your Windows Search" - $Search = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" - If (Test-Path $Search) { - Set-ItemProperty $Search AllowCortana -Value 1 - } - - #Re-enables the Windows Feedback Experience for sending anonymous data - Write-Output "Re-enabling Windows Feedback Experience" - $Period = "HKCU:\Software\Microsoft\Siuf\Rules" - If (!(Test-Path $Period)) { - New-Item $Period - } - Set-ItemProperty $Period PeriodInNanoSeconds -Value 1 - - #Enables bloatware applications - Write-Output "Adding Registry key to allow bloatware apps to return" - $registryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" - If (!(Test-Path $registryPath)) { - New-Item $registryPath - } - Set-ItemProperty $registryPath DisableWindowsConsumerFeatures -Value 0 - - #Changes Mixed Reality Portal Key 'FirstRunSucceeded' to 1 - Write-Output "Setting Mixed Reality Portal value to 1" - $Holo = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Holographic" - If (Test-Path $Holo) { - Set-ItemProperty $Holo FirstRunSucceeded -Value 1 - } - - #Re-enables live tiles - Write-Output "Enabling live tiles" - $Live = "HKCU:\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\PushNotifications" - If (!(Test-Path $Live)) { - New-Item $Live - } - Set-ItemProperty $Live NoTileApplicationNotification -Value 0 - - #Re-enables data collection - Write-Output "Re-enabling data collection" - $DataCollection = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" - If (!(Test-Path $DataCollection)) { - New-Item $DataCollection - } - Set-ItemProperty $DataCollection AllowTelemetry -Value 1 - - #Re-enables People Icon on Taskbar - Write-Output "Enabling People icon on Taskbar" - $People = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People" - If (!(Test-Path $People)) { - New-Item $People - } - Set-ItemProperty $People PeopleBand -Value 1 - - #Re-enables suggestions on start menu - Write-Output "Enabling suggestions on the Start Menu" - $Suggestions = "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" - If (!(Test-Path $Suggestions)) { - New-Item $Suggestions - } - Set-ItemProperty $Suggestions SystemPaneSuggestionsEnabled -Value 1 - - #Re-enables scheduled tasks that were disabled when running the Debloat switch - Write-Output "Enabling scheduled tasks that were disabled" - Get-ScheduledTask XblGameSaveTaskLogon | Enable-ScheduledTask - Get-ScheduledTask XblGameSaveTask | Enable-ScheduledTask - Get-ScheduledTask Consolidator | Enable-ScheduledTask - Get-ScheduledTask UsbCeip | Enable-ScheduledTask - Get-ScheduledTask DmClient | Enable-ScheduledTask - Get-ScheduledTask DmClientOnScenarioDownload | Enable-ScheduledTask - - Write-Output "Re-enabling and starting WAP Push Service" - #Enable and start WAP Push Service - Set-Service "dmwappushservice" -StartupType Automatic - Start-Service "dmwappushservice" - - Write-Output "Re-enabling and starting the Diagnostics Tracking Service" - #Enabling the Diagnostics Tracking Service - Set-Service "DiagTrack" -StartupType Automatic - Start-Service "DiagTrack" -} - -Function Enable-EdgePDF { - Write-Output "Setting Edge back to default" - $NoPDF = "HKCR:\.pdf" - $NoProgids = "HKCR:\.pdf\OpenWithProgids" - $NoWithList = "HKCR:\.pdf\OpenWithList" - #Sets edge back to default - If (Get-ItemProperty $NoPDF NoOpenWith) { - Remove-ItemProperty $NoPDF NoOpenWith - } - If (Get-ItemProperty $NoPDF NoStaticDefaultVerb) { - Remove-ItemProperty $NoPDF NoStaticDefaultVerb - } - If (Get-ItemProperty $NoProgids NoOpenWith) { - Remove-ItemProperty $NoProgids NoOpenWith - } - If (Get-ItemProperty $NoProgids NoStaticDefaultVerb) { - Remove-ItemProperty $NoProgids NoStaticDefaultVerb - } - If (Get-ItemProperty $NoWithList NoOpenWith) { - Remove-ItemProperty $NoWithList NoOpenWith - } - If (Get-ItemProperty $NoWithList NoStaticDefaultVerb) { - Remove-ItemProperty $NoWithList NoStaticDefaultVerb - } - - #Removes an underscore '_' from the Registry key for Edge - $Edge2 = "HKCR:\AppXd4nrz8ff68srnhf9t5a8sbjyar1cr723_" - If (Test-Path $Edge2) { - Set-Item $Edge2 AppXd4nrz8ff68srnhf9t5a8sbjyar1cr723 - } -} - -Function FixWhitelistedApps { - - [CmdletBinding()] - - Param() - - If (!(Get-AppxPackage -AllUsers | Select Microsoft.Paint3D, Microsoft.WindowsCalculator, Microsoft.WindowsStore, Microsoft.Windows.Photos)) { - - #Credit to abulgatz for these 4 lines of code - Get-AppxPackage -allusers Microsoft.Paint3D | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"} - Get-AppxPackage -allusers Microsoft.WindowsCalculator | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"} - Get-AppxPackage -allusers Microsoft.WindowsStore | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"} - Get-AppxPackage -allusers Microsoft.Windows.Photos | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"} - } -} - -Function UninstallOneDrive { - - Write-Output "Uninstalling OneDrive" - - New-PSDrive HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT - $onedrive = "$env:SYSTEMROOT\SysWOW64\OneDriveSetup.exe" - $ExplorerReg1 = "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" - $ExplorerReg2 = "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" - Stop-Process -Name "OneDrive*" - Start-Sleep 2 - If (!(Test-Path $onedrive)) { - $onedrive = "$env:SYSTEMROOT\System32\OneDriveSetup.exe" - } - Start-Process $onedrive "/uninstall" -NoNewWindow -Wait - Start-Sleep 2 - Write-Output "Stopping explorer" - Start-Sleep 1 - .\taskkill.exe /F /IM explorer.exe - Start-Sleep 3 - Write-Output "Removing leftover files" - Remove-Item "$env:USERPROFILE\OneDrive" -Force -Recurse - Remove-Item "$env:LOCALAPPDATA\Microsoft\OneDrive" -Force -Recurse - Remove-Item "$env:PROGRAMDATA\Microsoft OneDrive" -Force -Recurse - If (Test-Path "$env:SYSTEMDRIVE\OneDriveTemp") { - Remove-Item "$env:SYSTEMDRIVE\OneDriveTemp" -Force -Recurse - } - Write-Output "Removing OneDrive from windows explorer" - If (!(Test-Path $ExplorerReg1)) { - New-Item $ExplorerReg1 - } - Set-ItemProperty $ExplorerReg1 System.IsPinnedToNameSpaceTree -Value 0 - If (!(Test-Path $ExplorerReg2)) { - New-Item $ExplorerReg2 - } - Set-ItemProperty $ExplorerReg2 System.IsPinnedToNameSpaceTree -Value 0 - Write-Output "Restarting Explorer that was shut down before." - Start-Process explorer.exe -NoNewWindow -} - -#GUI prompt Debloat/Revert options and GUI variables -$Button = [Windows.MessageBoxButton]::YesNoCancel -$ErrorIco = [Windows.MessageBoxImage]::Error -$Warn = [Windows.MessageBoxImage]::Warning -$Ask = 'The following will allow you to either Debloat Windows 10 or to revert changes made after Debloating Windows 10. - - Select "Yes" to Debloat Windows 10 - - Select "No" to Revert changes made by this script - - Select "Cancel" to stop the script.' - -$EverythingorSpecific = "Would you like to remove everything that was preinstalled on your Windows Machine? Select Yes to remove everything, or select No to remove apps via a blacklist." -$EdgePdf = "Do you want to stop edge from taking over as the default PDF viewer?" -$EdgePdf2 = "Do you want to revert changes that disabled Edge as the default PDF viewer?" -$Reboot = "For some of the changes to properly take effect it is recommended to reboot your machine. Would you like to restart?" -$OneDriveDelete = "Do you want to uninstall One Drive?" - -$Prompt1 = [Windows.MessageBox]::Show($Ask, "Debloat or Revert", $Button, $ErrorIco) -Switch ($Prompt1) { - #This will debloat Windows 10 - Yes { - - $Prompt2 = [Windows.MessageBox]::Show($EverythingorSpecific, "Everything or Specific", $Button, $Warn) - switch ($Prompt2) { - Yes { - #Creates a "drive" to access the HKCR (HKEY_CLASSES_ROOT) - Write-Output "Creating PSDrive 'HKCR' (HKEY_CLASSES_ROOT). This will be used for the duration of the script as it is necessary for the removal and modification of specific registry keys." - New-PSDrive HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT - Start-Sleep 1 - Write-Output "Uninstalling bloatware, please wait." - DebloatAll - Write-Output "Bloatware removed." - Start-Sleep 1 - Write-Output "Removing specific registry keys." - Remove-Keys - Write-Output "Leftover bloatware registry keys removed." - Start-Sleep 1 - Write-Output "Checking to see if any Whitelisted Apps were removed, and if so re-adding them." - Start-Sleep 1 - FixWhitelistedApps - Start-Sleep 1 - Write-Output "Disabling Cortana from search, disabling feedback to Microsoft, and disabling scheduled tasks that are considered to be telemetry or unnecessary." - Protect-Privacy - Start-Sleep 1 - DisableCortana - Write-Output "Cortana disabled and removed from search, feedback to Microsoft has been disabled, and scheduled tasks are disabled." - Start-Sleep 1 - Write-Output "Stopping and disabling Diagnostics Tracking Service" - DisableDiagTrack - Write-Output "Diagnostics Tracking Service disabled" - Start-Sleep 1 - Write-Output "Disabling WAP push service" - Start-Sleep 1 - DisableWAPPush - Write-Output "WAP push service stopped and disabled" - Start-Sleep 1; = $Debloat - } - No { - #Creates a "drive" to access the HKCR (HKEY_CLASSES_ROOT) - Write-Output "Creating PSDrive 'HKCR' (HKEY_CLASSES_ROOT). This will be used for the duration of the script as it is necessary for the removal and modification of specific registry keys." - New-PSDrive HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT - Start-Sleep 1 - Write-Output "Uninstalling bloatware, please wait." - DebloatBlacklist - Write-Output "Bloatware removed." - Start-Sleep 1 - Write-Output "Removing specific registry keys." - Remove-Keys - Write-Output "Leftover bloatware registry keys removed." - Start-Sleep 1 - Write-Output "Checking to see if any Whitelisted Apps were removed, and if so re-adding them." - Start-Sleep 1 - FixWhitelistedApps - Start-Sleep 1 - Write-Output "Disabling Cortana from search, disabling feedback to Microsoft, and disabling scheduled tasks that are considered to be telemetry or unnecessary." - Protect-Privacy - Start-Sleep 1 - DisableCortana - Write-Output "Cortana disabled and removed from search, feedback to Microsoft has been disabled, and scheduled tasks are disabled." - Start-Sleep 1 - Write-Output "Stopping and disabling Diagnostics Tracking Service" - DisableDiagTrack - Write-Output "Diagnostics Tracking Service disabled" - Start-Sleep 1 - Write-Output "Disabling WAP push service" - Start-Sleep 1 - DisableWAPPush - Write-Output "WAP push service stopped and disabled" - Start-Sleep 1; = $Debloat - } - } - - $Prompt3 = [Windows.MessageBox]::Show($EdgePdf, "Edge PDF", $Button, $Warn) - Switch ($Prompt3) { - Yes { - Stop-EdgePDF - Write-Output "Edge will no longer take over as the default PDF viewer."; = $Yes - } - No { - = $No - } - } - #Prompt asking to delete OneDrive - $Prompt4 = [Windows.MessageBox]::Show($OneDriveDelete, "Delete OneDrive", $Button, $ErrorIco) - Switch ($Prompt4) { - Yes { - UninstallOneDrive - Write-Output "OneDrive is now removed from the computer."; = $Yes - } - No { - = $No - } - } - #Prompt asking if you'd like to reboot your machine - $Prompt5 = [Windows.MessageBox]::Show($Reboot, "Reboot", $Button, $Warn) - Switch ($Prompt5) { - Yes { - Write-Output "Unloading the HKCR drive..." - Remove-PSDrive HKCR - Start-Sleep 1 - Stop-Transcript - Write-Output "Initiating reboot." - Start-Sleep 2 - Restart-Computer; = $Yes - } - No { - Write-Output "Unloading the HKCR drive..." - Remove-PSDrive HKCR - Start-Sleep 1 - Stop-Transcript - Write-Output "Script has finished. Exiting." - Start-Sleep 2 - Exit; = $No - } - } - } - No { - Write-Output "Reverting changes..." - Write-Output "Creating PSDrive 'HKCR' (HKEY_CLASSES_ROOT). This will be used for the duration of the script as it is necessary for the modification of specific registry keys." - New-PSDrive HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT - Revert-Changes; = $Revert - #Prompt asking to revert edge changes as well - $Prompt6 = [Windows.MessageBox]::Show($EdgePdf2, "Revert Edge", $Button, $ErrorIco) - Switch ($Prompt6) { - Yes { - Enable-EdgePDF - Write-Output "Edge will no longer be disabled from being used as the default Edge PDF viewer."; = $Yes - } - No { - = $No - } - } - #Prompt asking if you'd like to reboot your machine - $Prompt7 = [Windows.MessageBox]::Show($Reboot, "Reboot", $Button, $Warn) - Switch ($Prompt7) { - Yes { - Write-Output "Unloading the HKCR drive..." - Remove-PSDrive HKCR - Start-Sleep 1 - Write-Output "Initiating reboot." - Stop-Transcript - Start-Sleep 2 - Restart-Computer; = $Yes - } - No { - Write-Output "Unloading the HKCR drive..." - Remove-PSDrive HKCR - Start-Sleep 1 - Write-Output "Script has finished. Exiting." - Stop-Transcript - Start-Sleep 2 - Exit; = $No - } - } - } -}