Hướng dẫn tạo PowerShell Script gỡ bỏ hoặc thêm lại ứng dụng Windows 10

Hướng dẫn tạo PowerShell Script gỡ bỏ hoặc thêm lại ứng dụng Windows 10


Ứng dụng trong Windows 10 được chia ra làm hai nhóm trong đó nhóm một gồm những ứng dụng được tải về từ Store được lưu trong thư mục WindowsApps theo đường dẫn C:\Program Files và có thể gỡ bỏ. Nhóm hai là những ứng dụng hệ thống được lưu chủ yếu trong thư mục SystemApps theo đường dẫn C:\Windows và có một số ứng dụng được lưu ngay trong thư mục Windows ví dụ như ứng dụng Settings, MiracastView, HoloShell..., nhóm ứng dụng này được bảo vệ không cho phép gỡ bỏ.

Như vậy nếu bạn muốn gỡ bỏ ứng dụng nào thuộc nhóm ứng dụng hệ thống trước hết bạn cần loại bỏ sự bảo vệ của ứng dụng và sau khi loại bỏ chúng ta sẽ dễ dàng gỡ bỏ bất kỳ ứng dụng nào bằng powershell script.

Phần 1. Loại bỏ sự bảo vệ ứng dụng hệ thống

Để loại bỏ sự bảo vệ ứng dụng hệ thống của Windows. Chúng ta cần sự trợ giúp của phần mềm có tên DB.Browser.for.SQLite, phần mềm này có rất nhiều chức năng và một trong số đó cho phép gỡ bảo vệ ứng dụng hệ thống. Tải và cài đặt phần mềm theo liên kết: https://yadi.sk/d/AftaIv-r3JRWdM

Bước 1: Bật chế độ xem file ẩn để thấy thư mục ProgramData trong phân vùng hệ thống.


Bước 2: Cài đặt TakeOwnership


Bước 3: Truy cập đường dẫn C:\ProgramData\Microsoft\Windows chuột phải vào thư mục AppRepository chọn Take Ownership


Bước 4: Khi Take Ownership thư mục xong truy cập thư mục tìm đến file có tên StateRepository-Machine.srd bạn copy file này lưu ở thư mục khác mục đích là sao lưu file này phòng trường hợp file bị hỏng có thay thế kịp thời.


Bước 5: Mở phần mềm DB.Browser.for.SQLite, tại giao diện chính nhấn vào tab Open Database tìm đến đường dẫn C:\ProgramData\Microsoft\Windows\AppRepository và dưới khung File name gõ chữ s mở file StateRepository-Machine.srd.


Bước 6: Khi mở xong chuyễn qua tab Browse Data trong khung Table chọn Package


Bước 7: Trong Package có nhiều cột nhưng chúng ta chỉ cần quan tâm đến hai cột PackageFullName và IsInbox. Kéo rộng cột PackageFullName ra để ý bên phải cột IsInbox quan sát bạn có thể thấy chỉ có hai giá trị 0 (không bảo vệ) và 1 (được bảo vệ).



Bước 8: Trong cột IsInbox sửa hết giá trị của PackageFullName từ 1 sang 0 sau đó bấm tổ hợp phím Ctrl+S lưu lại xong tắt phần mềm đi.


Đến bước này coi như đã xong, ứng dụng hệ thống không còn được bảo vệ bây giờ chúng ta sẽ đi tiếp phần 2 tạo powershell script gỡ bỏ ứng dụng.

Phần 2: Tạo powershell script

1. Tạo powershell script gỡ bỏ ứng dụng Remove-AppxPackage.ps1

Soạn nội dung bên dưới vào notepad và lưu lại với tên ví dụ Remove-AppxPackage.ps1 định dạng All files và Econding-ANSI

# Remove-AppxPackage for Current User
# Created by Nguyen Tuan
# Website:  www.blogthuthuatwin10.com

If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`" $args" -Verb RunAs
Exit
}

Function Main-menu()

{
    $index=1
$apps=Get-AppxPackage
#return entire listing of applications
   Write-Host "ID`t App name"
        Write-Host ""
foreach ($app in $apps)
{
Write-Host " $index`t $($app.name)"
$index++
}
    if ($apps)
    {
$index++
}
    else
    {

        Write-Error "Apps not found"         echo ""
        pause
        exit
    }
        Do
        {
   Write-Host ""
            $IDs=Read-Host -Prompt "For remove each app please select ID and press enter"
        }
        While($IDs -eq "")
   

   #check whether input values are correct
   try
   {
[int[]]$IDs=$IDs -split ","
   }
   catch
   {
Write-Host "Error:" $_.Exception.Message
   }
   foreach ($ID in $IDs)
   {
#check id is in the range
   if ($ID -ge 1 -and $ID -le $apps.count)
   {
$ID--
#Remove each app
$AppName=$apps[$ID].packagefullname
Remove-AppxPackage -Package $AppName
            cls
            Main-menu
   }
   else
   {
Write-Host ""
            Write-warning -Message "wrong ID"
            Write-Host ""
            pause
            cls
            Main-menu
   }
        }
}
Main-menu

Khi tạo xong chuột phải tập tin script vừa tạo chọn Run with Powershell


Nếu muốn gỡ bỏ ứng dụng nào chọn ID của ứng dụng nhấn Enter ví dụ như 21


Trường hợp nếu chọn ID không có trong danh sách ứng dụng sẽ đưa ra cảnh báo sai ID, khi đó nhấn Enter để tiếp tục.


2. Tạo powershell script thêm lại ứng dụng Add-AppxPackage.ps1

Soạn nội dung bên dưới vào notepad và lưu lại với tên ví dụ Add-AppxPackage.ps1 định dạng All files và Econding-ANSI

# Add-AppxPackage for Current User
# Created by Nguyen Tuan
# Website:  www.blogthuthuatwin10.com

If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]"Administrator")) {
Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`" $args" -Verb RunAs
Exit
}
Function Main-menu()
{
    $index=1
$apps=Get-AppxPackage -AllUsers
#return entire listing of applications
   Write-Host "ID`t App name"
        Write-Host ""
foreach ($app in $apps)
{
Write-Host " $index`t $($app.name)"
$index++
}
    if ($apps)
    {
$index++
        Write-Host ""
}
    else
    {
        Write-Error "Apps not found"
        Write-Host ""
        pause
        exit
    }
    Do
    {
        Write-Host ""
        $IDs=Read-Host -Prompt "For add each app please select ID and press enter"
    }
    While($IDs -eq "")
   
#check whether input values are correct
try
{
[int[]]$IDs=$IDs -split ","
}
catch
{
Write-Host "Error:" $_.Exception.Message
}
foreach ($ID in $IDs)
{
#check id is in the range
if ($ID -ge 1 -and $ID -le $apps.count)
{
$ID--
#Remove each app
$AppName=$apps[$ID].name
Get-AppxPackage -AllUsers $AppName | Foreach {Add-AppxPackage -Register "$($_.InstallLocation)\appxmanifest.xml" -DisableDevelopmentMode}
            cls
            Main-menu
}
else
{
Write-Host ""
            Write-warning -Message "wrong ID"
            Write-Host ""
            pause
            cls
            Main-menu
}
}
}
Main-menu

Khi tạo xong chuột phải tập tin script vừa tạo chọn Run with Powershell


Nếu muốn thêm lại ứng dụng nào chọn ID của ứng dụng nhấn Enter ví dụ như 23


Trường hợp nếu chọn ID không có trong danh sách ứng dụng sẽ đưa ra cảnh báo sai ID, khi đó nhấn Enter để tiếp tục.


QUAN TRỌNG: Những ứng dụng hệ thống sau khi đã gỡ bỏ nếu thêm lại thì ứng dụng sẽ mặc định được bảo vệ lại có giá trị IsInbox bằng 1 khi đó nếu muốn gỡ bỏ lại ứng dụng này bạn cần chạy lại phần mềm DB.Browser.for.SQLite sửa giá trị của ứng dụng về lại 0.