12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307 |
- Add-Type -AssemblyName System.Windows.Forms
- [System.Windows.Forms.Application]::EnableVisualStyles()
- #region begin GUI{
- $Form = New-Object system.Windows.Forms.Form
- $Form.ClientSize = '408,523'
- $Form.text = "Windows10Debloater"
- $Form.TopMost = $false
- $Debloat = New-Object system.Windows.Forms.Label
- $Debloat.text = "Debloat Options"
- $Debloat.AutoSize = $true
- $Debloat.width = 25
- $Debloat.height = 10
- $Debloat.location = New-Object System.Drawing.Point(9, 8)
- $Debloat.Font = 'Microsoft Sans Serif,12,style=Bold,Underline'
- $RemoveAllBloatware = New-Object system.Windows.Forms.Button
- $RemoveAllBloatware.text = "Remove All Bloatware"
- $RemoveAllBloatware.width = 142
- $RemoveAllBloatware.height = 40
- $RemoveAllBloatware.location = New-Object System.Drawing.Point(8, 32)
- $RemoveAllBloatware.Font = 'Microsoft Sans Serif,10'
- $RemoveBlacklist = New-Object system.Windows.Forms.Button
- $RemoveBlacklist.text = "Remove Bloatware With Blacklist"
- $RemoveBlacklist.width = 205
- $RemoveBlacklist.height = 37
- $RemoveBlacklist.location = New-Object System.Drawing.Point(9, 79)
- $RemoveBlacklist.Font = 'Microsoft Sans Serif,10'
- $Label1 = New-Object system.Windows.Forms.Label
- $Label1.text = "Revert Debloat "
- $Label1.AutoSize = $true
- $Label1.width = 25
- $Label1.height = 10
- $Label1.location = New-Object System.Drawing.Point(254, 7)
- $Label1.Font = 'Microsoft Sans Serif,12,style=Bold,Underline'
- $RevertChange = New-Object system.Windows.Forms.Button
- $RevertChange.text = "Revert Changes"
- $RevertChange.width = 113
- $RevertChange.height = 36
- $RevertChange.location = New-Object System.Drawing.Point(254, 32)
- $RevertChange.Font = 'Microsoft Sans Serif,10'
- $Label2 = New-Object system.Windows.Forms.Label
- $Label2.text = "Optional Privacy Changes/Fixes"
- $Label2.AutoSize = $true
- $Label2.width = 25
- $Label2.height = 10
- $Label2.location = New-Object System.Drawing.Point(9, 193)
- $Label2.Font = 'Microsoft Sans Serif,12,style=Bold,Underline'
- $DisableCortana = New-Object system.Windows.Forms.Button
- $DisableCortana.text = "Disable Cortana"
- $DisableCortana.width = 111
- $DisableCortana.height = 36
- $DisableCortana.location = New-Object System.Drawing.Point(9, 217)
- $DisableCortana.Font = 'Microsoft Sans Serif,10'
- $EnableCortana = New-Object system.Windows.Forms.Button
- $EnableCortana.text = "Enable Cortana"
- $EnableCortana.width = 112
- $EnableCortana.height = 36
- $EnableCortana.location = New-Object System.Drawing.Point(9, 260)
- $EnableCortana.Font = 'Microsoft Sans Serif,10'
- $StopEdgePDFTakeover = New-Object system.Windows.Forms.Button
- $StopEdgePDFTakeover.text = "Stop Edge PDF Takeover"
- $StopEdgePDFTakeover.width = 161
- $StopEdgePDFTakeover.height = 38
- $StopEdgePDFTakeover.location = New-Object System.Drawing.Point(130, 217)
- $StopEdgePDFTakeover.Font = 'Microsoft Sans Serif,10'
- $EnableEdgePDFTakeover = New-Object system.Windows.Forms.Button
- $EnableEdgePDFTakeover.text = "Enable Edge PDF Takeover"
- $EnableEdgePDFTakeover.width = 177
- $EnableEdgePDFTakeover.height = 39
- $EnableEdgePDFTakeover.location = New-Object System.Drawing.Point(130, 260)
- $EnableEdgePDFTakeover.Font = 'Microsoft Sans Serif,10'
- $DisableTelemetry = New-Object system.Windows.Forms.Button
- $DisableTelemetry.text = "Disable Telemetry/Tasks"
- $DisableTelemetry.width = 152
- $DisableTelemetry.height = 35
- $DisableTelemetry.location = New-Object System.Drawing.Point(9, 303)
- $DisableTelemetry.Font = 'Microsoft Sans Serif,10'
- $RemoveRegkeys = New-Object system.Windows.Forms.Button
- $RemoveRegkeys.text = "Remove Bloatware Regkeys"
- $RemoveRegkeys.width = 177
- $RemoveRegkeys.height = 40
- $RemoveRegkeys.location = New-Object System.Drawing.Point(169, 303)
- $RemoveRegkeys.Font = 'Microsoft Sans Serif,10'
- $RemoveOnedrive = New-Object system.Windows.Forms.Button
- $RemoveOnedrive.text = "Uninstall OneDrive"
- $RemoveOnedrive.width = 117
- $RemoveOnedrive.height = 35
- $RemoveOnedrive.location = New-Object System.Drawing.Point(9, 345)
- $RemoveOnedrive.Font = 'Microsoft Sans Serif,10'
- $FixWhitelist = New-Object system.Windows.Forms.Button
- $FixWhitelist.text = "Fix Whitelisted Apps"
- $FixWhitelist.width = 130
- $FixWhitelist.height = 37
- $FixWhitelist.location = New-Object System.Drawing.Point(254, 74)
- $FixWhitelist.Font = 'Microsoft Sans Serif,10'
- $RemoveBloatNoBlacklist = New-Object system.Windows.Forms.Button
- $RemoveBloatNoBlacklist.text = "Remove Bloatware Without Blacklist"
- $RemoveBloatNoBlacklist.width = 223
- $RemoveBloatNoBlacklist.height = 39
- $RemoveBloatNoBlacklist.location = New-Object System.Drawing.Point(9, 123)
- $RemoveBloatNoBlacklist.Font = 'Microsoft Sans Serif,10'
- $Form.controls.AddRange(@($Debloat, $RemoveAllBloatware, $RemoveBlacklist, $Label1, $RevertChange, $Label2, $DisableCortana, $EnableCortana, $StopEdgePDFTakeover, $EnableEdgePDFTakeover, $DisableTelemetry, $RemoveRegkeys, $RemoveOnedrive, $FixWhitelist, $RemoveBloatNoBlacklist))
- $DebloatFolder = "C:\Temp\Windows10Debloater"
- If (Test-Path $DebloatFolder) {
- Write-Output "$DebloatFolder exists. Skipping."
- }
- Else {
- Write-Output "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-Output "The folder $DebloatFolder was successfully created."
- }
- Start-Transcript -OutputDirectory "$DebloatFolder"
- #region gui events {
- $RemoveBlacklist.Add_Click( {
- $ErrorActionPreference = 'silentlycontinue'
- 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.News"
- "Microsoft.Office.Lens"
- "Microsoft.Office.OneNote"
- "Microsoft.Office.Sway"
- "Microsoft.OneConnect"
- "Microsoft.People"
- "Microsoft.Print3D"
- "Microsoft.RemoteDesktop"
- "Microsoft.SkypeApp"
- "Microsoft.StorePurchaseApp"
- "Microsoft.Office.Todo.List"
- "Microsoft.Whiteboard"
- "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*"
- "*Sway*"
-
- #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 $Bloat | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
- Write-Host "Trying to remove $Bloat."
- Write-Host "Bloatware removed! `n"
- }
- }
- Write-Host "Removing Bloatware with a specific blacklist."
- DebloatBlacklist
- })
- $RemoveAllBloatware.Add_Click( {
- $ErrorActionPreference = 'silentlycontinue'
- #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.
- #This is the switch parameter for running this script as a 'silent' script, for use in MDT images or any type of mass deployment without user interaction.
- Function Begin-SysPrep {
- $ErrorActionPreference = 'silentlycontinue'
- Write-Host -Message ('Starting Sysprep Fixes')
-
- # Disable Windows Store Automatic Updates
- Write-Host -Message "Adding Registry key to Disable Windows Store Automatic Updates"
- $registryPath = "HKLM:\SOFTWARE\Policies\Microsoft\WindowsStore"
- If (!(Test-Path $registryPath)) {
- Mkdir $registryPath -ErrorAction SilentlyContinue
- New-ItemProperty $registryPath -Name AutoDownload -Value 2
- }
- Else {
- Set-ItemProperty $registryPath -Name AutoDownload -Value 2
- }
- #Stop WindowsStore Installer Service and set to Disabled
- Write-Host -Message ('Stopping InstallService')
- Stop-Service InstallService
- Write-Host -Message ('Setting InstallService Startup to Disabled')
- & Set-Service -Name InstallService -StartupType Disabled
- }
-
- Function CheckDMWService {
- Param([switch]$Debloat)
-
- If (Get-Service -Name dmwappushservice | Where-Object {$_.StartType -eq "Disabled"}) {
- Set-Service -Name dmwappushservice -StartupType Automatic
- }
- If (Get-Service -Name dmwappushservice | Where-Object {$_.Status -eq "Stopped"}) {
- Start-Service -Name dmwappushservice
- }
- }
- Function DebloatAll {
-
- [CmdletBinding()]
-
- Param()
-
- #Removes AppxPackages
- #Credit to /u/GavinEke for a modified version of my whitelist code
- [regex]$WhitelistedApps = 'Microsoft.ScreenSketch|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|Microsoft.WindowsCamera|.NET'
- 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
- }
-
- #Creates a PSDrive to be able to access the 'HKCR' tree
- New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
- Function DebloatBlacklist {
- $ErrorActionPreference = 'silentlycontinue'
- $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.News"
- "Microsoft.Office.Lens"
- "Microsoft.Office.OneNote"
- "Microsoft.Office.Sway"
- "Microsoft.OneConnect"
- "Microsoft.People"
- "Microsoft.Print3D"
- "Microsoft.RemoteDesktop"
- "Microsoft.SkypeApp"
- "Microsoft.StorePurchaseApp"
- "Microsoft.Office.Todo.List"
- "Microsoft.Whiteboard"
- "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*"
- "*Sway*"
-
- #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 $Bloat | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
- Write-Host "Trying to remove $Bloat."
- }
- }
-
- Function Remove-Keys {
- $ErrorActionPreference = 'silentlycontinue'
-
- #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-Host "Removing $Key from registry"
- Remove-Item $Key -Recurse -ErrorAction SilentlyContinue
- }
- }
-
- Function Protect-Privacy {
- $ErrorActionPreference = 'silentlycontinue'
-
- #Creates a PSDrive to be able to access the 'HKCR' tree
- New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
-
- #Disables Windows Feedback Experience
- Write-Host "Disabling Windows Feedback Experience program"
- $Advertising = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo'
- If (Test-Path $Advertising) {
- Set-ItemProperty $Advertising -Name Enabled -Value 0 -Verbose
- }
-
- #Stops Cortana from being used as part of your Windows Search Function
- 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 -Name AllowCortana -Value 0 -Verbose
- }
-
- #Stops the Windows Feedback Experience from sending anonymous data
- Write-Host "Stopping the Windows Feedback Experience program"
- $Period1 = 'HKCU:\Software\Microsoft\Siuf'
- $Period2 = 'HKCU:\Software\Microsoft\Siuf\Rules'
- $Period3 = 'HKCU:\Software\Microsoft\Siuf\Rules\PeriodInNanoSeconds'
- If (!(Test-Path $Period3)) {
- mkdir $Period1 -ErrorAction SilentlyContinue
- mkdir $Period2 -ErrorAction SilentlyContinue
- mkdir $Period3 -ErrorAction SilentlyContinue
- New-ItemProperty $Period3 -Name PeriodInNanoSeconds -Value 0 -Verbose -ErrorAction SilentlyContinue
- }
-
- Write-Host "Adding Registry key to prevent bloatware apps from returning"
- #Prevents bloatware applications from returning
- $registryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent"
- If (!(Test-Path $registryPath)) {
- Mkdir $registryPath -ErrorAction SilentlyContinue
- New-ItemProperty $registryPath -Name DisableWindowsConsumerFeatures -Value 1 -Verbose -ErrorAction SilentlyContinue
- }
-
- Write-Host "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 -Name FirstRunSucceeded -Value 0 -Verbose
- }
-
- #Disables live tiles
- Write-Host "Disabling live tiles"
- $Live = 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\PushNotifications'
- If (!(Test-Path $Live)) {
- mkdir $Live -ErrorAction SilentlyContinue
- New-ItemProperty $Live -Name NoTileApplicationNotification -Value 1 -Verbose
- }
-
- #Turns off Data Collection via the AllowTelemtry key by changing it to 0
- Write-Host "Turning off Data Collection"
- $DataCollection = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection'
- If (Test-Path $DataCollection) {
- Set-ItemProperty $DataCollection -Name AllowTelemetry -Value 0 -Verbose
- }
-
- #Disables People icon on Taskbar
- Write-Host "Disabling People icon on Taskbar"
- $People = 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People'
- If (Test-Path $People) {
- Set-ItemProperty $People -Name PeopleBand -Value 0 -Verbose
- }
-
- #Disables suggestions on start menu
- Write-Host "Disabling suggestions on the Start Menu"
- $Suggestions = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager'
- If (Test-Path $Suggestions) {
- Set-ItemProperty $Suggestions -Name SystemPaneSuggestionsEnabled -Value 0 -Verbose
- }
-
-
- Write-Output "Removing CloudStore from registry if it exists"
- $CloudStore = 'HKCUSoftware\Microsoft\Windows\CurrentVersion\CloudStore'
- If (Test-Path $CloudStore) {
- Stop-Process Explorer.exe -Force
- Remove-Item $CloudStore
- Start-Process Explorer.exe -Wait
- }
-
- #Loads the registry keys/values below into the NTUSER.DAT file which prevents the apps from redownloading. Credit to a60wattfish
- reg load HKU\Default_User C:\Users\Default\NTUSER.DAT
- Set-ItemProperty -Path Registry::HKU\Default_User\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SystemPaneSuggestionsEnabled -Value 0
- Set-ItemProperty -Path Registry::HKU\Default_User\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name PreInstalledAppsEnabled -Value 0
- Set-ItemProperty -Path Registry::HKU\Default_User\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name OemPreInstalledAppsEnabled -Value 0
- reg unload HKU\Default_User
-
- #Disables scheduled tasks that are considered unnecessary
- Write-Host "Disabling scheduled tasks"
- #Get-ScheduledTask -TaskName XblGameSaveTaskLogon | Disable-ScheduledTask -ErrorAction SilentlyContinue
- Get-ScheduledTask -TaskName XblGameSaveTask | Disable-ScheduledTask -ErrorAction SilentlyContinue
- Get-ScheduledTask -TaskName Consolidator | Disable-ScheduledTask -ErrorAction SilentlyContinue
- Get-ScheduledTask -TaskName UsbCeip | Disable-ScheduledTask -ErrorAction SilentlyContinue
- Get-ScheduledTask -TaskName DmClient | Disable-ScheduledTask -ErrorAction SilentlyContinue
- Get-ScheduledTask -TaskName DmClientOnScenarioDownload | Disable-ScheduledTask -ErrorAction SilentlyContinue
- }
-
- #This includes fixes by xsisbest
- Function FixWhitelistedApps {
- $ErrorActionPreference = 'silentlycontinue'
-
- If (!(Get-AppxPackage -AllUsers | Select Microsoft.Paint3D, Microsoft.MSPaint, Microsoft.WindowsCalculator, Microsoft.WindowsStore, Microsoft.MicrosoftStickyNotes, Microsoft.WindowsSoundRecorder, Microsoft.Windows.Photos)) {
-
- #Credit to abulgatz for the 4 lines of code
- Get-AppxPackage -allusers Microsoft.Paint3D | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
- Get-AppxPackage -allusers Microsoft.MSPaint | 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.MicrosoftStickyNotes | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
- Get-AppxPackage -allusers Microsoft.WindowsSoundRecorder | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
- Get-AppxPackage -allusers Microsoft.Windows.Photos | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
- }
- }
-
- Function CheckDMWService {
- Param([switch]$Debloat)
-
- If (Get-Service -Name dmwappushservice | Where-Object {$_.StartType -eq "Disabled"}) {
- Set-Service -Name dmwappushservice -StartupType Automatic
- }
- If (Get-Service -Name dmwappushservice | Where-Object {$_.Status -eq "Stopped"}) {
- Start-Service -Name dmwappushservice
- }
- }
-
- Function CheckInstallService {
-
- If (Get-Service -Name InstallService | Where-Object {$_.Status -eq "Stopped"}) {
- Start-Service -Name InstallService
- Set-Service -Name InstallService -StartupType Automatic
- }
- }
-
- Write-Host "Initiating Sysprep"
- Begin-SysPrep
- Write-Host "Removing bloatware apps."
- DebloatAll
- DebloatBlacklist
- Write-Host "Removing leftover bloatware registry keys."
- Remove-Keys
- Write-Host "Checking to see if any Whitelisted Apps were removed, and if so re-adding them."
- FixWhitelistedApps
- Write-Host "Stopping telemetry, disabling unneccessary scheduled tasks, and preventing bloatware from returning."
- Protect-Privacy
- #Write-Host "Stopping Edge from taking over as the default PDF Viewer."
- #Stop-EdgePDF
- Write-Output "Setting the 'InstallService' Windows service back to 'Started' and the Startup Type 'Automatic'."
- CheckDMWService
- CheckInstallService
- Write-Host "Finished all tasks. `n"
-
- } )
- $RemoveBloatNoBlacklist.Add_Click( {
- $ErrorActionPreference = 'silentlycontinue'
- #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.
- #This is the switch parameter for running this script as a 'silent' script, for use in MDT images or any type of mass deployment without user interaction.
- param (
- [switch]$Debloat, [switch]$SysPrep
- )
-
- Function Begin-SysPrep {
- $ErrorActionPreference = 'silentlycontinue'
-
- param([switch]$SysPrep)
- Write-Host -Message ('Starting Sysprep Fixes')
-
- # Disable Windows Store Automatic Updates
- Write-Host -Message "Adding Registry key to Disable Windows Store Automatic Updates"
- $registryPath = "HKLM:\SOFTWARE\Policies\Microsoft\WindowsStore"
- If (!(Test-Path $registryPath)) {
- Mkdir $registryPath -ErrorAction SilentlyContinue
- New-ItemProperty $registryPath -Name AutoDownload -Value 2
- }
- Else {
- Set-ItemProperty $registryPath -Name AutoDownload -Value 2
- }
- #Stop WindowsStore Installer Service and set to Disabled
- Write-Host -Message ('Stopping InstallService')
- Stop-Service InstallService
- Write-Host -Message ('Setting InstallService Startup to Disabled')
- & Set-Service -Name InstallService -StartupType Disabled
- }
-
- #Creates a PSDrive to be able to access the 'HKCR' tree
- New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
- Function Start-Debloat {
- $ErrorActionPreference = 'silentlycontinue'
-
- param([switch]$Debloat)
-
- #Removes AppxPackages
- #Credit to Reddit user /u/GavinEke for a modified version of my whitelist code
- [regex]$WhitelistedApps = 'Microsoft.ScreenSketch|Microsoft.Paint3D|Microsoft.MSPaint|Microsoft.WindowsCalculator|Microsoft.WindowsStore|Microsoft.MicrosoftStickyNotes|Microsoft.WindowsSoundRecorder|Microsoft.Windows.Photos|CanonicalGroupLimited.UbuntuonWindows|Microsoft.WindowsCamera|.NET'
- Get-AppxPackage -AllUsers | Where-Object {$_.Name -NotMatch $WhitelistedApps} | Remove-AppxPackage -ErrorAction SilentlyContinue
- # Run this again to avoid error on 1803 or having to reboot.
- Get-AppxPackage -AllUsers | Where-Object {$_.Name -NotMatch $WhitelistedApps} | Remove-AppxPackage -ErrorAction SilentlyContinue
- Get-AppxProvisionedPackage -Online | Where-Object {$_.PackageName -NotMatch $WhitelistedApps} | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
- }
-
- Function Remove-Keys {
- $ErrorActionPreference = 'silentlycontinue'
-
- Param([switch]$Debloat)
-
- #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-Host "Removing $Key from registry"
- Remove-Item $Key -Recurse -ErrorAction SilentlyContinue
- }
- }
-
- Function Protect-Privacy {
- $ErrorActionPreference = 'silentlycontinue'
-
- Param([switch]$Debloat)
-
- #Creates a PSDrive to be able to access the 'HKCR' tree
- New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
-
- #Disables Windows Feedback Experience
- Write-Host "Disabling Windows Feedback Experience program"
- $Advertising = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo'
- If (Test-Path $Advertising) {
- Set-ItemProperty $Advertising -Name Enabled -Value 0 -Verbose
- }
-
- #Stops Cortana from being used as part of your Windows Search Function
- 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 -Name AllowCortana -Value 0 -Verbose
- }
-
- #Stops the Windows Feedback Experience from sending anonymous data
- Write-Host "Stopping the Windows Feedback Experience program"
- $Period1 = 'HKCU:\Software\Microsoft\Siuf'
- $Period2 = 'HKCU:\Software\Microsoft\Siuf\Rules'
- $Period3 = 'HKCU:\Software\Microsoft\Siuf\Rules\PeriodInNanoSeconds'
- If (!(Test-Path $Period3)) {
- mkdir $Period1 -ErrorAction SilentlyContinue
- mkdir $Period2 -ErrorAction SilentlyContinue
- mkdir $Period3 -ErrorAction SilentlyContinue
- New-ItemProperty $Period3 -Name PeriodInNanoSeconds -Value 0 -Verbose -ErrorAction SilentlyContinue
- }
-
- Write-Host "Adding Registry key to prevent bloatware apps from returning"
- #Prevents bloatware applications from returning
- $registryPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent"
- If (!(Test-Path $registryPath)) {
- Mkdir $registryPath -ErrorAction SilentlyContinue
- New-ItemProperty $registryPath -Name DisableWindowsConsumerFeatures -Value 1 -Verbose -ErrorAction SilentlyContinue
- }
-
- Write-Host "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 -Name FirstRunSucceeded -Value 0 -Verbose
- }
-
- #Disables live tiles
- Write-Host "Disabling live tiles"
- $Live = 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\PushNotifications'
- If (!(Test-Path $Live)) {
- mkdir $Live -ErrorAction SilentlyContinue
- New-ItemProperty $Live -Name NoTileApplicationNotification -Value 1 -Verbose
- }
-
- #Turns off Data Collection via the AllowTelemtry key by changing it to 0
- Write-Host "Turning off Data Collection"
- $DataCollection = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection'
- If (Test-Path $DataCollection) {
- Set-ItemProperty $DataCollection -Name AllowTelemetry -Value 0 -Verbose
- }
-
- #Disables People icon on Taskbar
- Write-Host "Disabling People icon on Taskbar"
- $People = 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People'
- If (Test-Path $People) {
- Set-ItemProperty $People -Name PeopleBand -Value 0 -Verbose
- }
-
- #Disables suggestions on start menu
- Write-Host "Disabling suggestions on the Start Menu"
- $Suggestions = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager'
- If (Test-Path $Suggestions) {
- Set-ItemProperty $Suggestions -Name SystemPaneSuggestionsEnabled -Value 0 -Verbose
- }
-
- Write-Output "Removing CloudStore from registry if it exists"
- $CloudStore = 'HKCUSoftware\Microsoft\Windows\CurrentVersion\CloudStore'
- If (Test-Path $CloudStore) {
- Stop-Process Explorer.exe -Force
- Remove-Item $CloudStore
- Start-Process Explorer.exe -Wait
- }
-
- #Loads the registry keys/values below into the NTUSER.DAT file which prevents the apps from redownloading. Credit to a60wattfish
- reg load HKU\Default_User C:\Users\Default\NTUSER.DAT
- Set-ItemProperty -Path Registry::HKU\Default_User\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name SystemPaneSuggestionsEnabled -Value 0
- Set-ItemProperty -Path Registry::HKU\Default_User\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name PreInstalledAppsEnabled -Value 0
- Set-ItemProperty -Path Registry::HKU\Default_User\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager -Name OemPreInstalledAppsEnabled -Value 0
- reg unload HKU\Default_User
-
- #Disables scheduled tasks that are considered unnecessary
- Write-Host "Disabling scheduled tasks"
- #Get-ScheduledTask -TaskName XblGameSaveTaskLogon | Disable-ScheduledTask -ErrorAction SilentlyContinue
- Get-ScheduledTask -TaskName XblGameSaveTask | Disable-ScheduledTask -ErrorAction SilentlyContinue
- Get-ScheduledTask -TaskName Consolidator | Disable-ScheduledTask -ErrorAction SilentlyContinue
- Get-ScheduledTask -TaskName UsbCeip | Disable-ScheduledTask -ErrorAction SilentlyContinue
- Get-ScheduledTask -TaskName DmClient | Disable-ScheduledTask -ErrorAction SilentlyContinue
- Get-ScheduledTask -TaskName DmClientOnScenarioDownload | Disable-ScheduledTask -ErrorAction SilentlyContinue
- }
-
- #This includes fixes by xsisbest
- Function FixWhitelistedApps {
-
- Param([switch]$Debloat)
-
- If (!(Get-AppxPackage -AllUsers | Select Microsoft.Paint3D, Microsoft.MSPaint, Microsoft.WindowsCalculator, Microsoft.WindowsStore, Microsoft.MicrosoftStickyNotes, Microsoft.WindowsSoundRecorder, Microsoft.Windows.Photos)) {
-
- #Credit to abulgatz for the 4 lines of code
- Get-AppxPackage -allusers Microsoft.Paint3D | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
- Get-AppxPackage -allusers Microsoft.MSPaint | 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.MicrosoftStickyNotes | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
- Get-AppxPackage -allusers Microsoft.WindowsSoundRecorder | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
- Get-AppxPackage -allusers Microsoft.Windows.Photos | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
- }
- }
-
- Function CheckDMWService {
- Param([switch]$Debloat)
-
- If (Get-Service -Name dmwappushservice | Where-Object {$_.StartType -eq "Disabled"}) {
- Set-Service -Name dmwappushservice -StartupType Automatic
- }
- If (Get-Service -Name dmwappushservice | Where-Object {$_.Status -eq "Stopped"}) {
- Start-Service -Name dmwappushservice
- }
- }
-
- Function CheckInstallService {
-
- If (Get-Service -Name InstallService | Where-Object {$_.Status -eq "Stopped"}) {
- Start-Service -Name InstallService
- Set-Service -Name InstallService -StartupType Automatic
- }
- }
-
- Begin-SysPrep
- Write-Host "Removing bloatware apps."
- Start-Debloat
- Write-Host "Removing leftover bloatware registry keys."
- Remove-Keys
- Write-Host "Checking to see if any Whitelisted Apps were removed, and if so re-adding them."
- FixWhitelistedApps
- Write-Host "Stopping telemetry, disabling unneccessary scheduled tasks, and preventing bloatware from returning."
- Protect-Privacy
- #Write-Host "Stopping Edge from taking over as the default PDF Viewer."
- Write-Host "Checking to make sure that the service 'dmwappushservice' has been started."
- CheckDMWService
- Write-Output "Setting the 'InstallService' Windows service back to started and setting the Startup Type to 'Automatic'."
- CheckInstallService
- Write-Host "Finished all tasks. `n"
-
- })
- $RevertChange.Add_Click( {
- $ErrorActionPreference = 'silentlycontinue'
- #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-Host "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-Host "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-Host "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-Host "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-Host "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-Host "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-Host "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-Host "Enabling People Icon on Taskbar"
- $People = 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People'
- If (Test-Path $People) {
- Set-ItemProperty $People -Name PeopleBand -Value 1 -Verbose
- }
-
- #Re-enables suggestions on start menu
- Write-Host "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-Host "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-Host "Re-enabling and starting WAP Push Service"
- #Enable and start WAP Push Service
- Set-Service "dmwappushservice" -StartupType Automatic
- Start-Service "dmwappushservice"
-
- Write-Host "Re-enabling and starting the Diagnostics Tracking Service"
- #Enabling the Diagnostics Tracking Service
- Set-Service "DiagTrack" -StartupType Automatic
- Start-Service "DiagTrack"
- Write-Host "Done reverting changes! `n"
- })
- $FixWhitelist.Add_Click( {
- $ErrorActionPreference = 'silentlycontinue'
- If (!(Get-AppxPackage -AllUsers | Select Microsoft.Paint3D, Microsoft.WindowsCalculator, Microsoft.WindowsStore, Microsoft.Windows.Photos, Microsoft.WindowsCamera)) {
-
- #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"}
- }
-
- Write-Host "Whitelisted apps were either fixed or re-added. `n"
- })
- $DisableCortana.Add_Click( {
- $ErrorActionPreference = 'silentlycontinue'
- 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
- Write-Host "Cortana has been disabled. `n"
- })
- $StopEdgePDFTakeover.Add_Click( {
- $ErrorActionPreference = 'silentlycontinue'
- #Stops edge from taking over as the default .PDF viewer
- Write-Host "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_
- }
- Write-Host "Edge should no longer take over as the default .PDF. `n"
- })
- $EnableCortana.Add_Click( {
- $ErrorActionPreference = 'silentlycontinue'
- 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
- Write-Host "Cortana has been enabled! `n"
- })
- $EnableEdgePDFTakeover.Add_Click( {
- New-PSDrive HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
- $ErrorActionPreference = 'silentlycontinue'
- Write-Host "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
- }
- Write-Host "Edge will now be able to be used for .PDF. `n"
- })
- $DisableTelemetry.Add_Click( {
- $ErrorActionPreference = 'silentlycontinue'
- #Disables Windows Feedback Experience
- Write-Host "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-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
- }
- #Disables Web Search in Start Menu
- Write-Host "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-Host "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-Host "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-Host "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-Host "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-Host "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-Host "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-Host "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-Host "Disabling People icon on Taskbar"
- $People = 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People'
- If (Test-Path $People) {
- Set-ItemProperty $People -Name PeopleBand -Value 0 -Verbose
- }
-
- #Disables scheduled tasks that are considered unnecessary
- Write-Host "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-Host "Uninstalling Telemetry Windows Updates"
- #Uninstalls Some Windows Updates considered to be Telemetry. !WIP!
- #Wusa /Uninstall /KB:3022345 /norestart /quiet
- #Wusa /Uninstall /KB:3068708 /norestart /quiet
- #Wusa /Uninstall /KB:3075249 /norestart /quiet
- #Wusa /Uninstall /KB:3080149 /norestart /quiet
- Write-Host "Stopping and disabling WAP Push Service"
- #Stop and disable WAP Push Service
- Stop-Service "dmwappushservice"
- Set-Service "dmwappushservice" -StartupType Disabled
- Write-Host "Stopping and disabling Diagnostics Tracking Service"
- #Disabling the Diagnostics Tracking Service
- Stop-Service "DiagTrack"
- Set-Service "DiagTrack" -StartupType Disabled
- Write-Host "Telemetry has been disabled! `n"
- })
- $RemoveRegkeys.Add_Click( {
- $ErrorActionPreference = 'silentlycontinue'
- $Keys = @(
-
- New-PSDrive HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
- #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-Host "Removing $Key from registry"
- Remove-Item $Key -Recurse
- }
- Write-Host "Additional bloatware keys have been removed! `n"
- })
- $RemoveOnedrive.Add_Click( {
- Write-Output "Checking for pre-existing files and folders located in the OneDrive folders..."
- Start-Sleep 1
- If (Get-Item -Path "$env:USERPROFILE\OneDrive\*") {
- Write-Output "Files found within the OneDrive folder! Checking to see if a folder named OneDriveBackupFiles exists."
- Start-Sleep 1
-
- If (Get-Item "$env:USERPROFILE\Desktop\OneDriveBackupFiles" -ErrorAction SilentlyContinue) {
- Write-Output "A folder named OneDriveBackupFiles already exists on your desktop. All files from your OneDrive location will be moved to that folder."
- }
- else {
- If (!(Get-Item "$env:USERPROFILE\Desktop\OneDriveBackupFiles" -ErrorAction SilentlyContinue)) {
- Write-Output "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-Output "Successfully created the folder 'OneDriveBackupFiles' on your desktop."
- }
- }
- Start-Sleep 1
- Move-Item -Path "$env:USERPROFILE\OneDrive\*" -Destination "$env:USERPROFILE\Desktop\OneDriveBackupFiles" -Force
- Write-Output "Successfully moved all files/folders from your OneDrive folder to the folder 'OneDriveBackupFiles' on your desktop."
- Start-Sleep 1
- Write-Output "Proceeding with the removal of OneDrive."
- Start-Sleep 1
- }
- Else {
- If (!(Get-Item -Path "$env:USERPROFILE\OneDrive\*")) {
- Write-Output "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
- }
- $DisableAllOneDrive = 'HKLM:Software\Policies\Microsoft\Windows\OneDrive'
- If (Test-Path $DisableAllOneDrive) {
- New-ItemProperty $DisableAllOneDrive -Name OneDrive -Value DisableFileSyncNGSC -Verbose
- }
- }
- 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"
- 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-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! `n"
- 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
- }
- $DisableAllOneDrive = 'HKLM:Software\Policies\Microsoft\Windows\OneDrive'
- If (Test-Path $DisableAllOneDrive) {
- New-ItemProperty $DisableAllOneDrive -Name OneDrive -Value DisableFileSyncNGSC -Verbose
- }
- })
- #endregion events }
- #endregion GUI }
- [void]$Form.ShowDialog()
|