ถอนการติดตั้งโปรแกรมผ่านรีจิสทรีหรือ PowerShell
ทุกโปรแกรมที่ติดตั้งจะลงทะเบียนคำสั่งถอนการติดตั้งไว้ในรีจิสทรี เมื่อลบโปรแกรมจาก การตั้งค่า → แอป ไม่ได้ หรือต้องการลบแบบเงียบ คำสั่งนี้คือทางออก
Windows เก็บคำสั่งถอนการติดตั้งไว้ที่ไหน
โปรแกรมที่ติดตั้งให้ผู้ใช้ทุกคนอยู่ใต้ HKLM โปรแกรม 32 บิตบน Windows 64 บิตอยู่ใต้ WOW6432Node และโปรแกรมที่ติดตั้งเฉพาะคุณอยู่ใต้ HKCU แต่ละโปรแกรมมีคีย์ย่อยที่มี DisplayName, DisplayVersion, UninstallString และหลายครั้งมี QuietUninstallString ด้วย
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallHKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\UninstallHKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallดูรายการโปรแกรมที่ติดตั้งด้วย PowerShell
คำสั่งนี้อ่านทั้งสามตำแหน่ง แล้วแสดงชื่อ เวอร์ชัน และคำสั่งถอนการติดตั้ง
$keys = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*"Get-ItemProperty $keys | Where-Object DisplayName | Select-Object DisplayName, DisplayVersion, UninstallString, QuietUninstallString | Sort-Object DisplayNameรันคำสั่งถอนการติดตั้ง
ถ้ามี QuietUninstallString คำสั่งนี้จะลบโปรแกรมโดยไม่ถามอะไร ถ้าไม่มี ให้รัน UninstallString แล้วเติมสวิตช์เงียบตามชนิดตัวติดตั้ง (/S สำหรับ NSIS, /VERYSILENT สำหรับ Inno Setup) สำหรับแพ็กเกจ MSI ชื่อคีย์ย่อยก็คือ ProductCode และลบได้ด้วย msiexec /x
msiexec /x {PRODUCT-CODE-GUID} /qn /norestart"C:\Program Files\App\uninstall.exe" /Sหรือให้ winget จัดการ
winget หาโปรแกรมจากคีย์รีจิสทรีชุดเดียวกัน รวมถึงโปรแกรมที่ไม่ได้ติดตั้งผ่าน winget แล้วเรียกตัวถอนการติดตั้งของโปรแกรมนั้น
winget listwinget uninstall --name "App Name"เมื่อไฟล์ตัวถอนการติดตั้งหายไป
ถ้าไฟล์ตัวถอนการติดตั้งถูกลบไปแล้ว การติดตั้งเวอร์ชันเดิมซ้ำมักช่วยซ่อมให้ จากนั้นจึงถอนการติดตั้งตามปกติได้ ลบรายการในรีจิสทรีด้วยมือเฉพาะเมื่อไฟล์ของโปรแกรมไม่อยู่แล้วเท่านั้น และส่งออก (export) คีย์เก็บไว้ก่อนลบ
คำถามที่พบบ่อย
ทำไมบางโปรแกรมไม่แสดงใน การตั้งค่า → แอป
การตั้งค่าจะแสดงเฉพาะรายการที่มี DisplayName และไม่ได้ถูกทำเครื่องหมายเป็นส่วนประกอบของระบบ โปรแกรมแบบพกพา (portable) ไม่ลงทะเบียนอะไรเลย และลบได้ด้วยการลบโฟลเดอร์ของมัน
ProductCode ของ MSI คืออะไร
คือ GUID ที่ระบุแพ็กเกจ MSI หนึ่งตัว เป็นชื่อคีย์ย่อยของโปรแกรมใต้ …\Uninstall และแสดงอยู่ในหน้าติดตั้งแบบเงียบของทุกโปรแกรมที่เป็น MSI บน ExeAtlas