Impossible de désinstaller Universal Apps via PowerShell

11

J'étais en train de désinstaller toutes les applications universelles d'une nouvelle installation de Windows 10 lorsque j'ai rencontré un barrage routier.

Ce n'est pas la première fois que je fais ça et ça se passe toujours bien. Cependant, cette fois, chaque fois que j'écris dans PowerShell

Get-AppxPackage -allusers | Remove-AppxPackage

ou quelque chose de plus spécifique comme

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

je reçois le message suivant:

Remove-AppxPackage: le déploiement a échoué avec HRESULT: 0x80073CFA, la suppression a échoué. Veuillez contacter votre fournisseur de logiciels. (Exception de HRESULT: 0x80073CFA) erreur 0x80070032: opération de suppression du déploiement AppX sur le package Microsoft.WindowsCalculator_10.1605.1582.0_x64__8wekyb3d8bbwe à partir de: C: \ Program Files \ WindowsApps \ Microsoft.WindowsCalculator_10.1605.1582.0_x64__8bekybby

Cette application fait partie de Windows et ne peut pas être désinstallée par utilisateur. Un administrateur peut tenter de supprimer l'application de l'ordinateur en activant ou désactivant les fonctionnalités Windows. Cependant, il peut ne pas être possible de désinstaller l'application.

REMARQUE: pour plus d'informations, recherchez [ActivityId] 75c5fc31-fb20-0001-77fd-c57520fbd101 dans le journal des événements ou utilisez la ligne de commande Get-AppxLog -ActivityID 75c5fc31-fb20-0001-77fd-c57520fbd101

À la ligne: 1 caractère: 49

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


Je reçois ce message pour chaque application que j'essaie de désinstaller, y compris celles que je connais sont parfaitement désinstallables comme la calculatrice ou la visionneuse d'images, ce qui ne s'est jamais produit auparavant.
Powershell fonctionne en hauteur et tout le reste fonctionne et semble normal.

Puis-je faire autre chose que réinstaller Windows?

Ryakna
la source
1
Essayez le script PowerShell dans la dernière entrée de cet article: Supprimer la suppression des applications système (contourner l'erreur 0x80073CFA) .
harrymc
Répondre s'il vous plaît .
harrymc
@PIMP_JUICE_IT Mais cela revient à réinstaller toutes les applications des packages provisionnés APRÈS les avoir désinstallés du compte utilisateur. Je n'ai pu désinstaller aucun d'entre eux en premier lieu, c'est le problème.
Ryakna
@ Ryakna avez-vous vérifié le hack que j'ai trouvé sur le net?
magicandre1981

Réponses:

5

À partir de la mise à jour anniversaire de Windows 10, Microsoft a ajouté une nouvelle entrée IsInboxdans la base de données SQLite C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srdpour les applications de boîte de réception. Et essayer de supprimer l'application app signalée comme IsInboxéchoue avec 0x80073CFA.

Mais il existe une solution de contournement laide, qui a été découverte en avril 2017 .

Vous devez télécharger et installer les outils ProcessHacker et DB Browser pour SQLite .

  • exécutez ProcessHacker 2 en tant qu'administrateur, sélectionnez a C:\Windows\System32\svchost.exe, faites un clic droit et sélectionnez Misc->Run as this user

entrez la description de l'image ici

Maintenant, sélectionnez ici C:\Program Files\DB Browser for SQLite\DB Browser for SQLite.exeet démarrez-le. Dans le navigateur SQLite, cliquez surOpen database

entrez la description de l'image ici

et ouvrez le fichier C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd(changez le type de fichier dans la boîte de dialogue ouverte pour tous les fichiers pour le voir).

Maintenant, cliquez sur l' Browse Dataonglet et changez le tableau enPackage

entrez la description de l'image ici

Maintenant , sélectionnez les applications que vous souhaitez supprimer et modifier le 1 pour la colonne IsInboxà 0et enregistrer les modifications.

entrez la description de l'image ici

répétez cela pour toutes les applications que vous souhaitez supprimer et maintenant les commandes Powersehll devraient fonctionner.

Mais l'auteur écrit que Microsoft bloque la mise à niveau vers les nouvelles versions de Windows si les applications de boîte de réception sont supprimées. Gardez cela à l'esprit.

magicandre1981
la source
Merci beaucoup pour cette info. M'a aidé à supprimer manuellement l'application de magasin cassée qu'il n'était pas possible de supprimer d'une autre manière (Power Shell inclus).
ElDog
Il semble que cela ne fonctionne plus dans les versions ultérieures de Windows 10. La base de données contient désormais des déclencheurs qui exécutent des fonctions définies par l'utilisateur, de sorte que toute mise à jour échoue ("Erreur: aucune fonction de ce type: workid") si l'application de chargement n'installe pas la ou les fonctions nécessaires.
Tim Sylvester
@TimSylvester quelle application souhaitez-vous désinstaller? En 1903, vous pouvez désinstaller plus d'applications de boîte de réception.
magicandre1981
Salut, je sais que c'est assez vieux maintenant, mais je viens de mettre un ordinateur portable sur le dos car il ne se mettrait pas à jour et faire ce processus semble vaguement familier. Je ne me souviens pas si j'ai effectivement fait cela, mais existe-t-il un moyen de déterminer si j'ai supprimé les applications limitant la mise à jour (évidemment sur d'autres systèmes)? Est-il possible de vérifier à l'aide de PDQ Inventory afin de pouvoir récupérer une liste des systèmes concernés et, enfin, si je réinstalle les applications, les futures mises à niveau reprendront-elles? Ou est-ce discutable maintenant avec la dernière version de Windows parce que je pense qu'il est plutôt idiot de MS d'empêcher les mises à jour sur quelque chose d'aussi stupide.
Jon Weinraub
@JonWeinraub dans la version actuelle de Windows 10, vous pouvez officiellement désinstaller plus d'applications de boîte de réception, donc vous n'en aurez peut-être pas besoin
magicandre1981
4

La suppression après nettoyage des applications système (erreur de contournement 0x80073CFA) contient ce 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))
}

En utilisant ce script, l'auteur remarque:

Vous pouvez remplacer $ packageBase par différents noms de packages.

Je n'ai pas essayé ce script moi-même.

harrymc
la source
Merci pour votre réponse. J'ai essayé le script dans certains autres systèmes et il fonctionne en effet pour presque toutes les applications universelles, même certaines généralement inamovibles, cependant, sur le système problématique, le problème persiste malheureusement et le script ne fonctionne pas. Il affiche exactement les mêmes messages d'erreur dans le PowerShell avec toutes les applications que j'essaie de supprimer.
Ryakna
Si cela se produit toujours lorsque PowerShell est appelé avec "Exécuter en tant qu'administrateur", alors quelque chose ne va pas sur cet ordinateur. Si cela pose un problème avec le Store, essayez ces 5 conseils pour résoudre les problèmes du Windows Store et des applications dans Windows 10 .
harrymc
@harrymc Cela n'a pas fonctionné avec$packageBase = "xboxapp", "officehub", "skypeapp"
JinSnow
2

La mise à jour anniversaire de Windows a apporté plusieurs modifications qui vous empêchent de désactiver certaines fonctionnalités, telles que Cortana ou la suppression d'applications par des moyens officiels. Certaines applications comme l'application xbox microsoft l'ont considérée comme une application importante pour le système, empêchant ainsi les moyens officiels de la supprimer.

Si vous allez dans le menu Démarrer, vous pouvez faire un clic droit dessus et cliquer sur désinstaller, inversement vous pouvez faire un clic droit sur le bouton Démarrer, aller dans les paramètres, puis les applications et fonctionnalités et le désinstaller à partir de là.

Maintenant, si vous insistez pour supprimer ces applications. Ils sont conservés C:\windows\SystemAppsafin que vous puissiez trouver le dossier dans lequel il est conservé et simplement supprimer le dossier ou l'option la plus sûre consiste à le renommer et à ajouter un caractère tel que le trait _de soulignement à la fin du nom.

Juste pour ajouter, si vous supprimez un dossier ou le renommez dans le dossier systemapps, il ne s'agit pas techniquement de le désinstaller, mais plutôt de le supprimer de force, si vous supprimez le dossier, ce qui pourrait laisser d'autres éléments installés comme des clés de registre et d'autres fichiers ailleurs que il utilise mais ne se trouve pas dans le dossier systemapps, ou le force à ne pas s'exécuter si vous renommez le dossier.

Comme Ryakna l'a dit dans les commentaires ci-dessous, l'utilisation de deux de ces options peut causer des problèmes plus tard, mais d'après mon expérience, je n'ai encore rencontré aucun problème, y compris la mise à jour. Mais il est toujours recommandé de désinstaller par des moyens officiels, soit en utilisant PowerShell si vous le connaissez, soit via l'option Programmes et fonctionnalités ou l'option de menu. Le SystemAppsdossier ne doit pas être renommé ou supprimé, car si vous faites cela, vous rencontrerez très probablement des problèmes que si vous deviez renommer ou supprimer un dossier dans le dossier systemapps.

Frostalf
la source
Merci pour votre temps. Le problème est que cette image Windows date de novembre et n'est pas encore connectée à Internet, donc pas mise à jour. En outre, j'ai juste essayé de désinstaller le magasin et la calculatrice d'un Windows 10 à jour en utilisant la même méthode et j'ai pu le faire sans aucun problème.
Ryakna
@Ryakna Ah ok, eh bien, je vais laisser ma réponse là au cas où quelqu'un voudrait connaître des moyens alternatifs pour les supprimer lol
Frostalf
Je ne peux pas renommer le SystemAppsdossier. J'ai dû supprimer le dossier de l'application Xbox à l'aide de BleachBit, ce n'était pas possible par des moyens officiels. L'application Xbox est toujours installée, l'emplacement du processus de la barre de jeu est ~\Windows\System32. Est-il sûr de supprimer GameBar*et de GamePanel*fichiers là-bas?
user598527
@ user598527 Si vous ne désinstallez pas l'application par des moyens officiels (c'est-à-dire via PowerShell) et que vous supprimez ou renommez simplement le dossier, l'application n'est pas vraiment désinstallée et peut causer des problèmes plus tard. Et vous ne devez pas renommer le SystemAppsdossier car il est essentiel dans Windows 10. Pour info, les dossiers Windows Universal Apps sont C:\Windows\SystemAppsdestinés aux fichiers d'application système, C:\Program Files\WindowsAppsaux autres fichiers d'application et C:\Users\Ryakna\AppData\Local\Packagesaux données d'application.
Ryakna
1
@ user598527 Vous en avez probablement supprimé certains (il y a beaucoup de Xbox AppX) mais je pense que le réseau principal Xbox n'est pas désinstallable. En exécutant Get-AppxPackage | Select Name, PackageFullNamesur PowerShell, vous pouvez voir que vous avez toujours Xbox AppX dans votre système. Je pense que vous pouvez supprimer la barre de jeu si vous arrêtez et désactivez les services Xbox (Probablement Xbox Live Networking Service)
Ryakna