Impossibile disinstallare Universal Apps tramite PowerShell


11

Stavo per disinstallare tutte le Universal Apps da una nuova installazione di Windows 10 quando ho raggiunto un blocco stradale.

Non è la prima volta che lo faccio e va sempre bene. Tuttavia, questa volta, ogni volta che scrivo in PowerShell

Get-AppxPackage -allusers | Remove-AppxPackage

o qualcosa di più specifico come

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

ricevo il seguente messaggio:

Remove-AppxPackage: distribuzione non riuscita con HRESULT: 0x80073CFA, rimozione non riuscita. Si prega di contattare il fornitore del software. (Eccezione da HRESULT: 0x80073CFA) errore 0x80070032: AppX Deployment Rimuovi operazione sul pacchetto Microsoft.WindowsCalculator_10.1605.1582.0_x64__8wekyb3d8bbwe da: C: \ Programmi \ WindowsApps \ Microsoft.WindowsCalculator_10.1605.1582.0_x64__8

Questa app fa parte di Windows e non può essere disinstallata in base all'utente. Un amministratore può tentare di rimuovere l'app dal computer utilizzando Attiva o disattiva funzionalità di Windows. Tuttavia, potrebbe non essere possibile disinstallare l'app.

NOTA: per ulteriori informazioni, cercare [ActivityId] 75c5fc31-fb20-0001-77fd-c57520fbd101 nel registro eventi o utilizzare la riga di comando Get-AppxLog -ActivityID 75c5fc31-fb20-0001-77fd-c57520fbd101

Alla riga: 1 carattere: 49

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


Ricevo questo messaggio per ogni singola app che provo a disinstallare, comprese quelle che conosco sono perfettamente installabili come la calcolatrice o il visualizzatore di immagini, cosa mai accaduta prima.
Powershell funziona in modo elevato e tutto il resto funziona e sembra normale.

C'è qualcosa che posso fare oltre a reinstallare Windows?


1
Prova lo script PowerShell nell'ultima voce di questo post: Rimozione pulita delle app di sistema (errore di bypass 0x80073CFA) .
harrymc,

Per cortesia risponda .
harrymc,

@PIMP_JUICE_IT Ma è per reinstallare tutte le app dai pacchetti forniti DOPO averli disinstallati dall'account utente. Non ho potuto disinstallare nessuno di essi in primo luogo, questo è il problema.
Ryakna,

@ Ryakna hai controllato l'hack che ho trovato in rete?
magicandre1981

Risposte:


5

A partire dall'aggiornamento dell'anniversario di Windows 10, Microsoft ha aggiunto una nuova voce IsInboxnel database SQLite C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srdper le app di posta in arrivo. E provare a rimuovere l'app contrassegnata come IsInboxnon riuscita 0x80073CFA.

Ma c'è una brutta soluzione, che è stata scoperta nell'aprile 2017 .

È necessario scaricare e installare gli strumenti ProcessHacker e DB Browser per SQLite .

  • eseguire ProcessHacker 2 come amministratore, selezionare a C:\Windows\System32\svchost.exe, fare clic con il tasto destro e selezionare Misc->Run as this user

inserisci qui la descrizione dell'immagine

Ora seleziona qui C:\Program Files\DB Browser for SQLite\DB Browser for SQLite.exee avviarlo. Nel browser SQLite, fare clic suOpen database

inserisci qui la descrizione dell'immagine

e apri il file C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd(cambia il tipo di file nella finestra di dialogo Apri in tutti i file per vederlo).

Ora, fai clic sulla Browse Datascheda e cambia la tabella inPackage

inserisci qui la descrizione dell'immagine

Ora selezionate le applicazioni che si desidera rimuovere e modificare l'1 per la colonna IsInboxper 0e salvare le modifiche.

inserisci qui la descrizione dell'immagine

ripeti l'operazione per tutte le app che desideri rimuovere e ora i comandi Powersehll dovrebbero funzionare.

Ma l'autore scrive che Microsoft blocca l'aggiornamento alle nuove build di Windows se vengono rimosse le app di posta in arrivo. Quindi tienilo a mente.


Grazie mille per queste informazioni Mi ha aiutato a eliminare manualmente l'applicazione di archivio rotta che non era possibile eliminare in altro modo (Power Shell inclusa).
ElDog,

Sembra che questo non funzioni più nelle build successive di Windows 10. Il database ora contiene trigger che eseguono funzioni definite dall'utente, quindi qualsiasi aggiornamento fallisce ("Errore: nessuna funzione di questo tipo: workid") se l'applicazione di caricamento non installa le funzioni necessarie.
Tim Sylvester,

@TimSylvester quale app vuoi disinstallare? Nel 1903 puoi disinstallare più app di posta in arrivo.
magicandre1981,

Ciao, so che ora è piuttosto vecchio, ma ho appena rovinato un laptop perché non si aggiornava e fare questo processo sembra vagamente familiare. Non riesco a ricordare se, in effetti, ho fatto questo, ma c'è un modo per determinare se avevo rimosso l'aggiornamento limitando le app (ovviamente su altri sistemi)? In qualunque modo posso controllare usando PDQ Inventory in modo da poter prendere un elenco di sistemi interessati e, infine, se reinstallo le app, riprenderanno gli aggiornamenti futuri? O è questo moot ora con l'ultima versione di Windows perché penso che sia piuttosto sciocco da parte di MS impedire aggiornamenti su qualcosa di così sciocco.
Jon Weinraub, il

@JonWeinraub nell'attuale versione di Windows 10 puoi disinstallare ufficialmente più app di posta in arrivo, quindi potresti non averne bisogno
magicandre1981

4

La rimozione post pulita delle app di sistema (errore di bypass 0x80073CFA) contiene questo script 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))
}

Usando questo script, l'autore osserva:

È possibile modificare $ packageBase con nomi di pacchetti diversi.

Non ho provato questo script da solo.


Grazie per la tua risposta. Ho provato lo script in alcuni altri sistemi e funziona davvero per quasi tutte le app universali, anche alcune di solito inamovibili, tuttavia, sul sistema problematico, il problema purtroppo persiste e lo script non funziona. Mostra esattamente gli stessi messaggi di errore in PowerShell con tutte le app che provo a rimuovere.
Ryakna,

Se ciò accade ancora quando PowerShell viene richiamato con "Esegui come amministratore", allora qualcosa non va nel computer. Se questo è un problema con lo Store, prova questi 5 suggerimenti per risolvere i problemi di Windows Store e App in Windows 10 .
harrymc,

@harrymc Non ha funzionato usando$packageBase = "xboxapp", "officehub", "skypeapp"
JinSnow

2

L'aggiornamento di Windows Anniversary ha apportato alcune modifiche che ti impediscono di disattivare alcune funzionalità, come la cortana o la rimozione di app con mezzi ufficiali. Alcune app come l'app xbox microsoft l'hanno considerata come un'app importante per il sistema, impedendo così mezzi ufficiali per rimuoverlo.

Se vai nel menu di avvio, puoi fare clic con il pulsante destro del mouse e fare clic su Disinstalla, viceversa puoi fare clic con il pulsante destro del mouse sul pulsante Start, andare su impostazioni, quindi app e funzionalità e disinstallarlo da lì.

Ora se insisti per rimuovere queste app. Sono conservati in C:\windows\SystemAppsmodo da poter trovare la cartella in cui è conservato e semplicemente rimuovere la cartella o l'opzione più sicura è quella di rinominarla e aggiungere un carattere come il carattere di sottolineatura _alla fine del nome.

Solo per aggiungere, se rimuovete una cartella o la rinominate all'interno della cartella systemapps, questo tecnicamente non lo sta disinstallando, piuttosto semplicemente rimuovendolo forzatamente, se cancellate la cartella che potrebbe lasciare altre cose installate come chiavi di registro e altri file altrove che usa ma non si trova nella cartella systemapps, o forzandolo a non funzionare se hai rinominato la cartella.

Come ha detto Ryakna nei commenti seguenti, l'utilizzo di una di queste due opzioni può causare problemi in seguito, tuttavia, per esperienza, non ho ancora riscontrato alcun problema, incluso l'aggiornamento. Si consiglia comunque di disinstallarlo con mezzi ufficiali, utilizzando PowerShell se si ha familiarità con esso o tramite l'opzione Programmi e funzionalità o l'opzione di menu. La SystemAppscartella non deve essere rinominata o eliminata, come se ciò accadesse, molto probabilmente si verificheranno problemi rispetto a se si dovesse rinominare o rimuovere una cartella all'interno della cartella systemapps.


Grazie per il tuo tempo. Il problema è che questa immagine di Windows è di novembre e non è ancora connessa a Internet, quindi non aggiornata. Inoltre, ho appena provato a disinstallare il negozio e la calcolatrice da un Windows 10 aggiornato utilizzando lo stesso metodo e sono stato in grado di farlo senza alcun problema.
Ryakna,

@Ryakna Ah ok, bene, lascerò lì la mia risposta nel caso qualcuno voglia conoscere modi alternativi per rimuoverli lol
Frostalf

Non riesco a rinominare la SystemAppscartella. Ho dovuto rimuovere la cartella dell'app Xbox usando BleachBit, non era possibile con mezzi ufficiali. L'app Xbox è ancora installata, la posizione del processo nella barra di gioco è ~\Windows\System32. È sicuro da rimuovere GameBar*e GamePanel*file lì?
user598527

@ user598527 Se non si disinstalla l'app con mezzi ufficiali (ad es. tramite PowerShell) e si rimuove o rinomina la cartella, l'app non viene realmente disinstallata e può causare problemi in seguito. E non dovresti rinominare la SystemAppscartella poiché è essenziale in Windows 10. Cordiali saluti, le cartelle delle app universali di Windows sono C:\Windows\SystemAppsper i file delle app di sistema, C:\Program Files\WindowsAppsper altri file delle app e C:\Users\Ryakna\AppData\Local\Packagesper i dati delle app.
Ryakna,

1
@ user598527 Probabilmente ne hai rimossi alcuni (ci sono molti Xbox AppX) ma penso che il backbone principale di Xbox non sia instabile. Eseguendo Get-AppxPackage | Select Name, PackageFullNamePowerShell puoi vedere che hai ancora Xbox AppX nel tuo sistema. Penso che puoi rimuovere la barra di gioco se ti fermi e disabiliti i servizi Xbox (probabilmente Xbox Live Networking Service)
Ryakna,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.