From 4d303e3218c82d2b8b9af1c1019d08e122e3c979 Mon Sep 17 00:00:00 2001 From: Alex Hirsch Date: Thu, 20 Aug 2015 14:49:09 +0200 Subject: [PATCH] use `dism.exe` to force remove certain windows components close #12 close #17 --- scripts/remove-default-apps.ps1 | 55 +++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/scripts/remove-default-apps.ps1 b/scripts/remove-default-apps.ps1 index e6a09bf..764e8fa 100644 --- a/scripts/remove-default-apps.ps1 +++ b/scripts/remove-default-apps.ps1 @@ -2,6 +2,12 @@ # This script removes unwanted Apps that come with Windows. If you do not want # to remove certain Apps comment out the corresponding lines below. +Import-Module -DisableNameChecking $PSScriptRoot\..\lib\reg-helper.psm1 + +echo "Elevating priviledges for this process" +do {} until (Elevate-Privileges SeTakeOwnershipPrivilege) + +echo "Uninstalling default apps" $apps = @( # default Windows 10 apps "Microsoft.3DBuilder" @@ -11,13 +17,11 @@ $apps = @( "Microsoft.BingSports" "Microsoft.BingWeather" "Microsoft.Getstarted" - #"Microsoft.MicrosoftEdge" "Microsoft.MicrosoftOfficeHub" "Microsoft.MicrosoftSolitaireCollection" "Microsoft.Office.OneNote" "Microsoft.People" "Microsoft.SkypeApp" - "Microsoft.Windows.Cortana" "Microsoft.Windows.Photos" "Microsoft.WindowsAlarms" "Microsoft.WindowsCalculator" @@ -37,25 +41,50 @@ $apps = @( "Microsoft.MinecraftUWP" "ShazamEntertainmentLtd.Shazam" "king.com.CandyCrushSaga" + + # apps which cannot be removed using Remove-AppxPackage + #"Microsoft.BioEnrollment" + #"Microsoft.MicrosoftEdge" + #"Microsoft.Windows.Cortana" + #"Microsoft.WindowsFeedback" + #"Microsoft.XboxGameCallableUI" + #"Microsoft.XboxIdentityProvider" + #"Windows.ContactSupport" ) -echo "Uninstalling default apps" foreach ($app in $apps) { - Get-AppxPackage -Name $app -AllUsers | Remove-AppxPackage -ErrorAction SilentlyContinue + Get-AppxPackage -Name $app -AllUsers | Remove-AppxPackage Get-AppXProvisionedPackage -Online | where DisplayName -EQ $app | - Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue + Remove-AppxProvisionedPackage -Online } -echo "Renaming unremovable apps" -$apps = @( - "Microsoft.BioEnrollment_cw5n1h2txyewy" - "Microsoft.XboxGameCallableUI_cw5n1h2txyewy" - "Microsoft.XboxIdentityProvider_cw5n1h2txyewy" - "WindowsFeedback_cw5n1h2txyewy" +echo "Force removing system apps" +$needles = @( + "BioEnrollment" + "ContactSupport" + "Cortana" + "Feedback" + "Flash" + "OneDrive" + "Xbox" ) -foreach ($app in $apps) { - mv "$env:WinDir\SystemApps\$app" "$env:WinDir\SystemApps\_$app" +foreach ($needle in $needles) { + $pkgs = (ls "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages" | + where Name -Like "*$needle*") + + foreach ($pkg in $pkgs) { + $pkgname = $pkg.Name.split('\')[-1] + + Takeown-Registry($pkg.Name) + Takeown-Registry($pkg.Name + "\Owners") + + Set-ItemProperty -Path ("HKLM:" + $pkg.Name.Substring(18)) -Name Visibility -Value 1 + New-ItemProperty -Path ("HKLM:" + $pkg.Name.Substring(18)) -Name DefVis -PropertyType DWord -Value 2 + Remove-Item -Path ("HKLM:" + $pkg.Name.Substring(18) + "\Owners") + + dism.exe /Online /Remove-Package /PackageName:$pkgname /NoRestart + } }