ไม่สามารถถอนการติดตั้ง Universal Apps ผ่าน PowerShell


11

ฉันอยู่ในขั้นตอนการถอนการติดตั้งแอพ Universal ทั้งหมดจากการติดตั้ง Windows 10 ใหม่เมื่อฉันตีสิ่งกีดขวางบนถนน

ไม่ใช่ครั้งแรกที่ฉันทำเช่นนี้และมันจะไปได้ดีเสมอ อย่างไรก็ตามในครั้งนี้เมื่อใดก็ตามที่ฉันเขียนใน PowerShell

Get-AppxPackage -allusers | Remove-AppxPackage

หรือสิ่งที่เฉพาะเจาะจงมากขึ้นเช่น

Get-AppxPackage -allusers *windowscalculator* | Remove-AppxPackage

ฉันได้รับข้อความต่อไปนี้:

Remove-AppxPackage: การปรับใช้ล้มเหลวด้วย HRESULT: 0x80073CFA, การลบล้มเหลว โปรดติดต่อผู้จำหน่ายซอฟต์แวร์ของคุณ (ข้อยกเว้นจาก HRESULT: 0x80073CFA) ข้อผิดพลาด 0x80070032: การปรับใช้ AppX ลบการดำเนินการบนแพคเกจ Microsoft.WindowsCalculator_10.1605.1582.0_x64__8wekyb3d8bbwe จาก: C: \ Program Files \ WindowsApps \ Microsoft.WindowsCalculator_10.1605288288288288288

แอพนี้เป็นส่วนหนึ่งของ Windows และไม่สามารถถอนการติดตั้งแบบต่อผู้ใช้ ผู้ดูแลระบบสามารถพยายามที่จะลบแอพออกจากคอมพิวเตอร์โดยใช้เปิดหรือปิดคุณสมบัติ Windows อย่างไรก็ตามอาจไม่สามารถถอนการติดตั้งแอพได้

หมายเหตุ: สำหรับข้อมูลเพิ่มเติมให้มองหา [ActivityId] 75c5fc31-fb20-0001-77fd-c57520fbd101 ในบันทึกเหตุการณ์หรือใช้บรรทัดคำสั่ง Get-AppxLog -ActivityID 75c5fc31-fb20-0001-77fd-c57520fbd101

ที่บรรทัด: 1 อักขระ: 49

+ Get-appxpackage -allusers *windowscalculator* | Remove-AppxPackage + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (Microsoft.Windo...__8wekyb3d8bbwe:String) [Remove-AppxPackage], IOException + FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.RemoveAppxPackageCommand


ฉันได้รับข้อความนี้สำหรับทุก ๆ แอปที่ฉันพยายามถอนการติดตั้งรวมถึงสิ่งที่ฉันรู้ว่าสามารถถอนการติดตั้งได้อย่างสมบูรณ์แบบเช่นเครื่องคิดเลขหรือโปรแกรมดูรูปภาพซึ่งไม่เคยเกิดขึ้นมาก่อน
Powershell กำลังยกระดับและทุกอย่างอื่นทำงานได้และดูเหมือนปกติ

มีบางอย่างที่ฉันสามารถทำได้นอกเหนือจากการติดตั้ง Windows ใหม่หรือไม่


1
ลอง PowerShell สคริปต์ในรายการสุดท้ายของบทความนี้: การกำจัดสะอาดปพลิเคชันระบบ (บายพาสข้อผิดพลาด 0x80073CFA)
harrymc

กรุณาตอบ .
harrymc

@PIMP_JUICE_IT แต่นั่นคือการติดตั้งแอพทั้งหมดใหม่จากแพ็คเกจที่กำหนดหลังจากถอนการติดตั้งแอปเหล่านั้นจากบัญชีผู้ใช้ ฉันไม่สามารถถอนการติดตั้งใด ๆ ในตอนแรกนั่นคือปัญหา
Ryakna

@Ryakna คุณตรวจสอบแฮ็คที่ฉันพบในเน็ตแล้วหรือยัง?
magicandre1981

คำตอบ:


5

เริ่มต้นด้วยการอัปเดต Windows 10 Anniversary Microsoft เพิ่มรายการใหม่IsInboxในฐานข้อมูล SQLite C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srdสำหรับแอปกล่องจดหมาย และพยายามที่จะนำแอปแอปตั้งค่าสถานะเป็นล้มเหลวด้วยIsInbox0x80073CFA

แต่มีวิธีแก้ปัญหาที่น่าเกลียดที่ถูกค้นพบในเมษายน 2017

คุณจำเป็นต้องดาวน์โหลดและติดตั้งเครื่องมือที่ProcessHackerและDB เบราว์เซอร์สำหรับ SQLite

  • เรียกใช้ ProcessHacker 2 ในฐานะผู้ดูแลระบบเลือก a C:\Windows\System32\svchost.exe, ทำการคลิกขวาแล้วเลือกMisc->Run as this user

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้เลือกที่นี่C:\Program Files\DB Browser for SQLite\DB Browser for SQLite.exeและเริ่มมัน ในเบราว์เซอร์ SQLite คลิกที่Open database

ป้อนคำอธิบายรูปภาพที่นี่

และเปิดไฟล์C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd(เปลี่ยนประเภทไฟล์ในกล่องโต้ตอบเปิดเป็นไฟล์ทั้งหมดเพื่อดู)

ตอนนี้คลิกที่Browse Dataแท็บและเปลี่ยนตารางเป็นPackage

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้เลือกปพลิเคชันที่คุณต้องการที่จะลบและเปลี่ยน 1 สำหรับคอลัมน์IsInboxไป0และบันทึกการเปลี่ยนแปลง

ป้อนคำอธิบายรูปภาพที่นี่

ทำซ้ำสำหรับแอพทั้งหมดที่คุณต้องการลบและตอนนี้คำสั่ง Powersehll ควรใช้งานได้แล้ว

แต่ผู้เขียนเขียนว่า Microsoft บล็อกการปรับรุ่นเป็น Windows รุ่นใหม่หากแอปในกล่องข้อความถูกลบ ดังนั้นจงเก็บเรื่องนี้ไว้ในใจ


ขอบคุณมากสำหรับข้อมูลนี้ ช่วยฉันในการลบแอปพลิเคชันสโตร์ที่ใช้งานไม่ได้ด้วยตนเองซึ่งไม่สามารถลบด้วยวิธีอื่นได้
ElDog

ดูเหมือนว่าสิ่งนี้จะไม่ทำงานใน Windows 10 รุ่นใหม่กว่า ขณะนี้ฐานข้อมูลมีทริกเกอร์ที่เรียกใช้ฟังก์ชันที่ผู้ใช้กำหนดดังนั้นการอัปเดตใด ๆ จึงล้มเหลว ("ข้อผิดพลาด: ไม่มีฟังก์ชั่นดังกล่าว: workid") หากแอปพลิเคชันโหลดไม่ติดตั้งฟังก์ชันที่จำเป็น
Tim Sylvester

@TimSylvester คุณต้องการถอนการติดตั้งแอพใด ในปี 1903 คุณสามารถถอนการติดตั้งแอปกล่องจดหมายได้มากขึ้น
magicandre1981

สวัสดีฉันรู้ว่านี่ค่อนข้างเก่าตอนนี้ แต่ฉันเพิ่งแล็ปท็อปเพราะจะไม่อัปเดตและทำกระบวนการนี้ดูเหมือนคุ้นเคย ฉันจำไม่ได้ว่าทำจริงหรือไม่ แต่มีวิธีการตรวจสอบหรือไม่ว่าฉันได้ลบแอพที่ จำกัด การอัปเดต (เห็นได้ชัดในระบบอื่น) หรือไม่ วิธีใดบ้างที่ฉันสามารถตรวจสอบการใช้ PDQ Inventory เพื่อให้ฉันสามารถคว้ารายการระบบที่ได้รับผลกระทบและสุดท้ายถ้าฉันติดตั้งแอพใหม่การอัพเกรดในอนาคตจะกลับมาทำงานต่อหรือไม่ หรือเป็นสิ่งที่สงสัยในขณะนี้กับ Windows รุ่นล่าสุดเพราะฉันคิดว่ามันค่อนข้างโง่ของ MS เพื่อป้องกันการอัปเดตสิ่งที่โง่นี้
Jon Weinraub

@JonWeinraub ในรุ่นปัจจุบันของ Windows 10 คุณสามารถถอนการติดตั้งแอปกล่องจดหมายอย่างเป็นทางการมากขึ้นดังนั้นคุณอาจไม่จำเป็นต้องใช้มันเลย
magicandre1981

4

โพสต์ใหม่ การลบแอประบบ (ข้อผิดพลาดบายพาส 0x80073CFA) มีสคริปต์ PowerShell นี้:

function Enable-Privilege {  
  param($Privilege)
  $Definition = @'
using System;  
using System.Runtime.InteropServices;  
public class AdjPriv {  
  [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
  internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,
    ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr rele);
  [DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]
  internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);
  [DllImport("advapi32.dll", SetLastError = true)]
  internal static extern bool LookupPrivilegeValue(string host, string name,
    ref long pluid);
  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  internal struct TokPriv1Luid {
    public int Count;
    public long Luid;
    public int Attr;
  }
  internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
  internal const int TOKEN_QUERY = 0x00000008;
  internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
  public static bool EnablePrivilege(long processHandle, string privilege) {
    bool retVal;
    TokPriv1Luid tp;
    IntPtr hproc = new IntPtr(processHandle);
    IntPtr htok = IntPtr.Zero;
    retVal = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,
      ref htok);
    tp.Count = 1;
    tp.Luid = 0;
    tp.Attr = SE_PRIVILEGE_ENABLED;
    retVal = LookupPrivilegeValue(null, privilege, ref tp.Luid);
    retVal = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero,
      IntPtr.Zero);
    return retVal;
  }
}
'@  
  $ProcessHandle = (Get-Process -id $pid).Handle
  $type = Add-Type $definition -PassThru
  $type[0]::EnablePrivilege($processHandle, $Privilege)
}

function Take-Over($path) {  
  $owner = [Security.Principal.NTAccount]'Administrators'

  $key = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey($path, 'ReadWriteSubTree', 'TakeOwnership')
  $acl = $key.GetAccessControl()
  $acl.SetOwner($owner)
  $key.SetAccessControl($acl)

  $acl = $key.getaccesscontrol()
  $rule = New-Object System.Security.AccessControl.RegistryAccessRule "Administrators", "FullControl", "ContainerInherit", "None", "Allow"
  $acl.SetAccessRule($rule)
  $key.SetAccessControl($acl)
}

do {} until (Enable-Privilege SeTakeOwnershipPrivilege)

function Remove-Package($name) {  
  $key = "SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\$name"
  Take-Over $key
  Remove-Item -Path HKLM:"$key\Owners" -Force -Recurse
  & C:\Windows\System32\PkgMgr.exe /up:$name /norestart /quiet
}

#Remove Feedback
$packageBase = "Microsoft-WindowsFeedback"
$packageNames = (dir ("HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\Packages\" + $packageBase + "*")).name

forEach ($package in $packageNames)
{   
    Remove-Package $package.substring($package.indexOf($packageBase))
}

ในการใช้สคริปต์นี้ผู้เขียนกล่าวว่า:

คุณสามารถเปลี่ยน $ packageBase เป็นชื่อแพ็คเกจอื่นได้

ฉันไม่ได้ลองสคริปต์นี้ด้วยตัวเอง


ขอบคุณสำหรับคำตอบ. ฉันได้ลองใช้สคริปต์ในระบบอื่นและมันใช้งานได้จริงกับแอปสากลเกือบทุกตัวแม้บางตัวจะไม่สามารถทำการลบได้ แต่ในระบบที่มีปัญหาปัญหายังคงมีอยู่ แต่น่าเสียดายที่สคริปต์ยังคงใช้งานไม่ได้ มันแสดงข้อความแสดงข้อผิดพลาดเหมือนกันทุกประการใน PowerShell กับแอพทั้งหมดที่ฉันพยายามลบ
Ryakna

หากยังคงเกิดขึ้นเมื่อ PowerShell ถูกเรียกด้วย "Run as administrator" แสดงว่ามีบางอย่างผิดปกติในคอมพิวเตอร์เครื่องนั้น ถ้าเรื่องนี้เป็นปัญหากับร้านลองเหล่านี้5 เคล็ดลับการแก้ไข Windows Store และ App ปัญหาใน Windows 10
harrymc

@harrymc มันไม่ทำงานโดยใช้$packageBase = "xboxapp", "officehub", "skypeapp"
JinSnow

2

การอัปเดต Windows Anniversary มีการเปลี่ยนแปลงเล็กน้อยที่ป้องกันไม่ให้คุณปิดคุณลักษณะบางอย่างเช่น cortana หรือลบแอพด้วยวิธีการที่เป็นทางการ แอพบางตัวเช่นไมโครซอฟท์แอป xbox ถือว่าเป็นแอพที่สำคัญต่อระบบจึงป้องกันไม่ให้มีวิธีการที่เป็นทางการออก

หากคุณไปที่เมนูเริ่มต้นคุณสามารถคลิกขวาแล้วคลิกถอนการติดตั้งตรงกันข้ามคุณสามารถคลิกปุ่มเริ่มได้ทันทีไปที่การตั้งค่าจากนั้นแอพและคุณสมบัติและถอนการติดตั้งจากที่นั่น

ตอนนี้หากคุณยืนยันที่จะลบแอพเหล่านี้ พวกเขาจะถูกเก็บไว้ในC:\windows\SystemAppsเพื่อให้คุณสามารถค้นหาโฟลเดอร์มันถูกเก็บไว้ในและเพียงแค่ลบโฟลเดอร์หรือตัวเลือกที่ปลอดภัยกว่าคือการเปลี่ยนชื่อและเพิ่มตัวอักษรเช่นขีดล่าง_ท้ายชื่อ

เพียงแค่เพิ่มหากคุณลบโฟลเดอร์หรือเปลี่ยนชื่อภายในโฟลเดอร์ systemapps นี่คือเทคนิคที่ไม่ถอนการติดตั้งมันค่อนข้างแรงเพียงลบมันถ้าคุณลบโฟลเดอร์ที่สามารถปล่อยให้สิ่งอื่น ๆ ที่ติดตั้งยังคงเหมือนรีจิสทรีคีย์และไฟล์อื่น ๆ มันใช้ แต่ไม่ได้อยู่ในโฟลเดอร์ systemapps หรือบังคับให้มันไม่ทำงานหากคุณเปลี่ยนชื่อโฟลเดอร์

ดังที่ Ryakna ได้กล่าวไว้ในความคิดเห็นด้านล่างการใช้สองตัวเลือกเหล่านี้อาจทำให้เกิดปัญหาในภายหลังได้อย่างไรก็ตามจากประสบการณ์ของฉันฉันยังไม่พบปัญหาใด ๆ รวมถึงการอัปเดต แต่ก็ยังแนะนำให้ถอนการติดตั้งด้วยวิธีการอย่างเป็นทางการทั้งโดยใช้ PowerShell ถ้าคุณคุ้นเคยหรือผ่านตัวเลือกโปรแกรมและคุณสมบัติหรือตัวเลือกเมนู SystemAppsโฟลเดอร์ไม่ควรจะเปลี่ยนชื่อหรือลบเช่นถ้าคุณทำเช่นนี้คุณจะพบปัญหาได้มากที่สุดกว่าถ้าคุณมีการเปลี่ยนชื่อหรือลบโฟลเดอร์ในโฟลเดอร์ systemapps


ขอบคุณที่สละเวลา. ปัญหาคืออิมเมจ Windows นี้มาจากเดือนพฤศจิกายนและยังไม่ได้เชื่อมต่อกับอินเทอร์เน็ต นอกจากนี้ฉันเพิ่งลองถอนการติดตั้งร้านค้าและเครื่องคิดเลขจาก Windows 10 ที่ทันสมัยโดยใช้วิธีการเดียวกันและสามารถทำได้โดยไม่มีปัญหา
Ryakna

@Ryakna อ่าอืมฉันจะทิ้งคำตอบไว้ที่นั่นในกรณีที่มีคนต้องการรู้วิธีอื่นในการลบออก lol
Frostalf

ฉันเปลี่ยนชื่อSystemAppsโฟลเดอร์ไม่ได้ ฉันต้องลบโฟลเดอร์แอป Xbox โดยใช้ BleachBit ไม่สามารถทำได้โดยวิธีทางการ แอปพลิเค Xbox ~\Windows\System32ยังคงติดตั้งตั้งกระบวนการเกมบาร์ การลบGameBar*และGamePanel*ไฟล์มีความปลอดภัยหรือไม่
user598527

@ user598527 หากคุณไม่ถอนการติดตั้งแอปด้วยวิธีการอย่างเป็นทางการ (เช่นผ่าน PowerShell) และเพียงลบหรือเปลี่ยนชื่อโฟลเดอร์แอปจะไม่ถูกถอนการติดตั้งจริง ๆ และอาจทำให้เกิดปัญหาในภายหลังได้ และคุณไม่ควรเปลี่ยนชื่อSystemAppsโฟลเดอร์ตามที่จำเป็นใน Windows 10 FYI โฟลเดอร์ Windows Universal Apps C:\Windows\SystemAppsสำหรับไฟล์แอประบบC:\Program Files\WindowsAppsสำหรับไฟล์แอพอื่น ๆ และC:\Users\Ryakna\AppData\Local\Packagesสำหรับข้อมูลแอพ
Ryakna

1
@ user598527 คุณอาจลบบางส่วน (มี Xbox AppX จำนวนมาก) แต่ฉันคิดว่า Xbox backbone หลักไม่สามารถถอนการติดตั้งได้ เมื่อเรียกใช้Get-AppxPackage | Select Name, PackageFullNamePowerShell คุณจะเห็นว่าคุณยังมี Xbox AppX ในระบบของคุณ ฉันคิดว่าคุณสามารถลบ game bar ได้หากคุณหยุดและปิดการใช้งานบริการ Xbox (อาจเป็นไปได้Xbox Live Networking Service)
Ryakna
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.