Universal Apps k√∂nnen nicht √ľber PowerShell deinstalliert werden - Windows-10, Powershell, Windows-Store-App

Ich war gerade dabei, alle Universal Apps von einer neuen Windows 10-Installation zu deinstallieren, als ich auf eine Straßensperre stieß.

Es ist nicht das erste Mal, dass ich das mache, und es läuft immer gut. Diesmal jedoch, wenn ich in PowerShell schreibe

Get-AppxPackage -allusers | Remove-AppxPackage

oder etwas spezifischeres wie

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

Ich erhalte folgende Nachricht:

Remove-AppxPackage: Bereitstellung mit HRESULT fehlgeschlagen: 0x80073CFA, Entfernung fehlgeschlagen. Bitte wenden Sie sich an Ihren Softwarehersteller. (Ausnahme von HRESULT: 0x80073CFA) Fehler 0x80070032: AppX-Bereitstellung Entfernungsvorgang f√ľr Paket Microsoft.WindowsCalculator_10.1605.1582.0_x64__8wekyb3d8bbwe von: C: Programm FilesWindowsAppsMicrosoft.WindowsCalculator_10.1605.1582.0_x64__8wekyb3d8bbwe ist fehlgeschlagen.

Diese App ist Teil von Windows und kann nicht seinauf Benutzerbasis deinstalliert. Ein Administrator kann es versuchen Entfernen der App vom Computer mithilfe von Windows-Funktionen aktivieren oder deaktivieren. Möglicherweise kann die App jedoch nicht deinstalliert werden.

HINWEIS: Weitere Informationen finden Sie unter [ActivityId] 75c5fc31-fb20-0001-77fd-c57520fbd101 im Ereignisprotokoll oder √ľber die Befehlszeile Get-AppxLog -ActivityID 75c5fc31-fb20-0001-77fd-c57520fbd101

In der Zeile: 1 Zeichen: 49

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


Ich erhalte diese Meldung f√ľr jede einzelne App, die ich zu deinstallieren versuche, einschlie√ülich derer, von denen ich wei√ü, dass sie perfekt deinstallierbar sind, wie der Taschenrechner oder der Bildbetrachter, was noch nie zuvor passiert ist.
Powershell läuft erhöht und alles andere funktioniert und scheint normal zu sein.

Kann ich neben der Neuinstallation von Windows noch etwas tun?

Antworten:

5 f√ľr Antwort ‚ĄĖ 1

Ab dem Windows 10-Jubil√§ums-Update hat Microsoft einen neuen Eintrag hinzugef√ľgt IsInbox in der SQLite-Datenbank C:ProgramDataMicrosoftWindowsAppRepositoryStateRepository-Machine.srd f√ľr die Inbox-Apps. Und versuchen, App App zu entfernen, die als gekennzeichnet ist IsInbox scheitert mit 0x80073CFA.

Aber es gibt eine hässliche Problemumgehung entdeckt im April 2017.

Sie m√ľssen die Tools herunterladen und installieren ProcessHacker und DB Browser f√ľr SQLite.

  • F√ľhren Sie ProcessHacker 2 als Administrator aus, und w√§hlen Sie a aus C:WindowsSystem32svchost.exeKlicken Sie mit der rechten Maustaste und w√§hlen Sie Misc->Run as this user

Bildbeschreibung hier eingeben

Jetzt hier auswählen C:Program FilesDB Browser for SQLiteDB Browser for SQLite.exe und starte es. Klicken Sie im SQLite-Browser auf Open database

Bildbeschreibung hier eingeben

und √∂ffne die Datei C:ProgramDataMicrosoftWindowsAppRepositoryStateRepository-Machine.srd (√Ąndern Sie den Dateityp im ge√∂ffneten Dialogfeld auf alle Dateien, um ihn anzuzeigen.)

Klicken Sie nun auf die Schaltfläche Browse Data Registerkarte, und ändern Sie die Tabelle in Package

Bildbeschreibung hier eingeben

W√§hlen Sie nun die Apps aus, die Sie entfernen m√∂chten, und √§ndern Sie die 1 f√ľr die Spalte IsInbox zu 0 und speichern Sie die √Ąnderungen.

Bildbeschreibung hier eingeben

Wiederholen Sie dies f√ľr alle Apps, die Sie entfernen m√∂chten. Jetzt sollten die Powersehll-Befehle funktionieren.

Der Autor schreibt jedoch, dass Microsoft das Upgrade auf neuere Windows-Builds blockiert, wenn Inbox-Apps entfernt werden. Denken Sie also daran.


4 f√ľr Antwort ‚ĄĖ 2

Die Post Sauberes Entfernen von System-Apps (Bypass-Fehler 0x80073CFA) enthält dieses PowerShell-Skript:

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 = "SOFTWAREMicrosoftWindowsCurrentVersionComponent Based ServicingPackages$name"
Take-Over $key
Remove-Item -Path HKLM:"$keyOwners" -Force -Recurse
& C:WindowsSystem32PkgMgr.exe /up:$name /norestart /quiet
}

#Remove Feedback
$packageBase = "Microsoft-WindowsFeedback"
$packageNames = (dir ("HKLM:SOFTWAREMicrosoftWindowsCurrentVersionComponent Based ServicingPackages" + $packageBase + "*")).name

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

Zur Verwendung dieses Skripts bemerkt der Autor:

Sie können $ packageBase in andere Paketnamen ändern.

Ich habe dieses Skript nicht selbst ausprobiert.


2 f√ľr Antwort ‚ĄĖ 3

Windows-Jubil√§ums-Update, machte einige√Ąnderungen, die Sie daran hindern, bestimmte Funktionen wie Cortana zu deaktivieren oder Apps auf offiziellem Wege zu entfernen. Einige Apps wie die Xbox-App Microsoft haben sie als wichtige App f√ľr das System eingestuft und verhindern somit die beh√∂rdliche Entfernung.

Wenn Sie in das Startmen√ľ gehen, k√∂nnen Sie mit der rechten Maustaste darauf klicken und auf Deinstallieren klicken. Umgekehrt k√∂nnen Sie mit der rechten Maustaste auf die Startschaltfl√§che klicken, zu den Einstellungen und dann zu den Apps und Funktionen gehen und sie von dort deinstallieren.

Nun, wenn Sie darauf bestehen, diese Apps zu entfernen. Sie werden festgehalten C:windowsSystemApps So k√∂nnen Sie den Ordner finden, in dem er gespeichert ist, und ihn einfach entfernen. Alternativ k√∂nnen Sie ihn umbenennen und ein Zeichen wie den Unterstrich hinzuf√ľgen _ bis zum Ende des Namens.

Nur zum Hinzuf√ľgen, wenn Sie einen Ordner entfernen oder umbenennenInnerhalb des systemapps-Ordners wird es technisch gesehen nicht deinstalliert, sondern nur mit Gewalt entfernt, wenn Sie den Ordner gel√∂scht haben, wodurch andere Dinge wie Registrierungsschl√ľssel und andere Dateien, die er verwendet, sich jedoch nicht im systemapps-Ordner befinden, noch installiert bleiben oder erzwingen k√∂nnten Es wird nicht ausgef√ľhrt, wenn Sie den Ordner umbenannt haben.

Wie Ryakna in den Kommentaren unten sagte, mitBeide Optionen k√∂nnen sp√§ter zu Problemen f√ľhren. Meiner Erfahrung nach habe ich jedoch noch keine Probleme, einschlie√ülich der Aktualisierung. Es wird jedoch weiterhin empfohlen, das Programm auf offiziellem Wege zu deinstallieren, entweder mithilfe von Powershell, wenn Sie mit dem Programm vertraut sind, oder √ľber die Programme und Funktionen oder die Men√ľoption. Das SystemApps Der Ordner sollte nicht umbenannt oder gel√∂scht werden. In diesem Fall treten h√∂chstwahrscheinlich Probleme auf, als wenn Sie einen Ordner innerhalb des systemapps-Ordners umbenennen oder entfernen w√ľrden.


Lies jetzt