Não foi possível desinstalar o Universal Apps pelo PowerShell

11

Eu estava no processo de desinstalar todos os aplicativos universais de uma nova instalação do Windows 10 quando encontrei um obstáculo.

Não é a primeira vez que faço isso e sempre vai bem. No entanto, desta vez, sempre que escrevo no PowerShell

Get-AppxPackage -allusers | Remove-AppxPackage

ou algo mais específico, como

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

eu recebo a seguinte mensagem:

Remove-AppxPackage: falha na implantação com HRESULT: 0x80073CFA, falha na remoção. Entre em contato com seu fornecedor de software. (Exceção de HRESULT: 0x80073CFA) erro 0x80070032: Implantação do AppX Remova a operação no pacote Microsoft.WindowsCalculator_10.1605.1582.0_x64__8wekyb3d8bbwe de: C: \ Arquivos de programas \ WindowsApps \ Microsoft.WindowsCalculator_10.1605.182b_kyd.

Este aplicativo faz parte do Windows e não pode ser desinstalado por usuário. Um administrador pode tentar remover o aplicativo do computador usando Ativar ou desativar os recursos do Windows. No entanto, talvez não seja possível desinstalar o aplicativo.

NOTA: Para obter informações adicionais, procure [ActivityId] 75c5fc31-fb20-0001-77fd-c57520fbd101 no log de eventos ou use a linha de comando Get-AppxLog -ActivityID 75c5fc31-fb20-0001-77fd-c57520fbd101

Na linha: 1 caractere: 49

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


Estou recebendo essa mensagem para todos os aplicativos que tento desinstalar, incluindo aqueles que eu sei que são perfeitamente desinstaláveis, como a calculadora ou o visualizador de imagens, o que nunca aconteceu antes.
O Powershell está funcionando alto e tudo o resto funciona e parece normal.

Há algo que eu possa fazer além de reinstalar o Windows?

Ryakna
fonte
1
Experimente o script do PowerShell na última entrada desta postagem: Remoção limpa de aplicativos do sistema (erro de desvio 0x80073CFA) .
precisa saber é
Responda por favor .
precisa saber é
@PIMP_JUICE_IT Mas isso é para reinstalar todos os aplicativos dos pacotes provisionados após desinstalá-los da conta do usuário. Não consegui desinstalar nenhum deles em primeiro lugar, esse é o problema.
precisa saber é o seguinte
@ Ryakna você verificou o hack que eu encontrei na net?
magicandre1981

Respostas:

5

A partir da atualização do Windows 10 Anniversary, a Microsoft adicionou uma nova entrada IsInboxno banco de dados SQLite C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srdpara os aplicativos da caixa de entrada. E tentando remover o aplicativo sinalizado como IsInboxfalha 0x80073CFA.

Mas há uma solução feia que foi descoberta em abril de 2017 .

Você precisa baixar e instalar as ferramentas ProcessHacker e DB Browser for SQLite .

  • execute o ProcessHacker 2 como administrador, selecione a C:\Windows\System32\svchost.exe, clique com o botão direito e selecione Misc->Run as this user

insira a descrição da imagem aqui

Agora selecione aqui C:\Program Files\DB Browser for SQLite\DB Browser for SQLite.exee inicie-o. No navegador SQLite, clique emOpen database

insira a descrição da imagem aqui

e abra o arquivo C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd(altere o tipo de arquivo na caixa de diálogo Abrir para todos os arquivos para vê-lo).

Agora, clique na Browse Dataguia e altere a tabela paraPackage

insira a descrição da imagem aqui

Agora selecione os aplicativos que você deseja remover e altere o 1 da coluna IsInboxpara 0e salve as alterações.

insira a descrição da imagem aqui

repita isso para todos os aplicativos que você deseja remover e agora os comandos do Powersehll devem funcionar.

Mas o autor escreve que a Microsoft bloqueia a atualização para versões mais recentes do Windows se os aplicativos da caixa de entrada forem removidos. Portanto, mantenha isso em mente.

magicandre1981
fonte
Muito obrigado por esta informação. Ajudou-me a excluir manualmente o aplicativo de armazenamento danificado, que não era possível excluir de nenhuma outra maneira (incluindo o power shell).
ElDog 17/10
Parece que isso não funciona mais nas versões posteriores do Windows 10. O banco de dados agora contém gatilhos que executam funções definidas pelo usuário; portanto, qualquer atualização falha ("Erro: não existe essa função: id do trabalho") se o aplicativo de carregamento não instalar as funções necessárias.
Tim Sylvester
@ TimSylvester, qual aplicativo você deseja desinstalar? Em 1903, você pode desinstalar mais aplicativos da caixa de entrada.
magicandre1981
Oi, eu sei que isso é bastante antigo agora, mas acabei de colocar um laptop em um pique porque ele não era atualizado e esse processo parece vagamente familiar. Não me lembro se fiz isso de fato, mas existe uma maneira de determinar se eu removi os aplicativos que restringem a atualização (obviamente em outros sistemas)? De qualquer maneira que eu possa verificar usando o PDQ Inventory para obter uma lista dos sistemas afetados e, por último, se eu reinstalar os aplicativos, as atualizações futuras serão retomadas? Ou isso é discutível agora com a versão mais recente do Windows, porque eu acho que é um pouco tolo da Microsoft impedir atualizações sobre algo tão tolo.
Jon Weinraub 22/01
@JonWeinraub na atual versão do Windows 10 você pode oficialmente desinstalação mais caixa de entrada apps.so você pode não precisar dele
magicandre1981
4

A remoção Pós limpa de aplicativos do sistema (erro de desvio 0x80073CFA) contém este script do 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))
}

Ao usar esse script, o autor observa:

Você pode alterar $ packageBase para diferentes nomes de pacotes.

Eu não tentei esse script sozinho.

harrymc
fonte
Obrigado pela sua resposta. Eu tentei o script em alguns outros sistemas e ele realmente funciona para quase todos os aplicativos universais, mesmo alguns geralmente irremovíveis, no entanto, no sistema problemático, o problema infelizmente persiste e o script não funciona. Ele mostra exatamente as mesmas mensagens de erro no PowerShell com todos os aplicativos que tento remover.
precisa saber é o seguinte
Se isso ainda acontecer quando o PowerShell for chamado com "Executar como administrador", algo está muito errado nesse computador. Se houver um problema com a loja, tente estas 5 dicas para corrigir problemas da loja e do Windows no Windows 10 .
harrymc
@harrymc Não funcionou usando #$packageBase = "xboxapp", "officehub", "skypeapp"
30719 JinSnow
2

A atualização do Windows Anniversary fez algumas alterações que impedem que você desative certos recursos, como cortana ou remova aplicativos por meios oficiais. Alguns aplicativos, como o aplicativo xbox microsoft, o consideraram um aplicativo importante para o sistema, impedindo, assim, os meios oficiais de removê-lo.

Se você entrar no menu Iniciar, poderá clicar com o botão direito do mouse e desinstalar; por outro lado, pode clicar com o botão direito do mouse, acessar configurações, aplicativos e recursos e desinstalá-lo a partir daí.

Agora, se você insistir em remover esses aplicativos. Eles são mantidos em C:\windows\SystemAppsPara que você possa encontrar a pasta em que está e apenas removê-la ou a opção mais segura é renomeá-la e adicionar um caractere como o sublinhado _ao final do nome.

Apenas para adicionar, se você remover uma pasta ou renomeá-la dentro da pasta sistemmapps, isso tecnicamente não será desinstalado, mas apenas forçado a removê-lo se você excluiu a pasta que poderia deixar outras coisas instaladas ainda, como chaves de registro e outros arquivos em outros lugares que ele usa, mas não está localizado na pasta SYSTEMMAPPS, ou obriga-o a não executar se você renomeou a pasta.

Como a Ryakna disse nos comentários abaixo, o uso de uma dessas duas opções pode causar problemas mais tarde, no entanto, pela minha experiência, ainda não encontrei nenhum problema, incluindo a atualização. Mas ainda é recomendável desinstalar por meios oficiais, usando o powershell se você estiver familiarizado com ele ou através da opção de programas e recursos ou opção de menu. A SystemAppspasta não deve ser renomeada ou excluída, como se você fizer isso, provavelmente encontrará problemas do que se fosse renomear ou remover uma pasta dentro da pasta sistemmapps.

Frostalf
fonte
Obrigado pelo seu tempo. O problema é que esta imagem do Windows é de novembro e não está conectada à Internet, portanto, não é atualizada. Além disso, tentei desinstalar a loja e a calculadora de um Windows 10 atualizado usando o mesmo método e consegui fazê-lo sem problemas.
precisa saber é o seguinte
@Ryakna Ah ok, bem, vou deixar minha resposta lá no caso de alguém quiser saber formas alternativas para removê-los lol
Frostalf
Não consigo mudar o nome da SystemAppspasta. Eu tive que remover a pasta do aplicativo Xbox usando o BleachBit, não era possível por meios oficiais. O aplicativo Xbox ainda está instalado, a localização do processo da Game Bar é ~\Windows\System32. É seguro remover GameBar*e GamePanel*arquivos lá?
user598527
@ user598527 Se você não desinstalar o aplicativo por meios oficiais (por exemplo, através do PowerShell) e apenas remover ou renomear a pasta, o aplicativo não será realmente desinstalado e poderá causar problemas mais tarde. E você não deve renomear a SystemAppspasta, pois é essencial no Windows 10. Para sua informação, as pastas do Windows Universal Apps são C:\Windows\SystemAppspara arquivos de aplicativos do sistema, C:\Program Files\WindowsAppspara outros arquivos de aplicativos e C:\Users\Ryakna\AppData\Local\Packagespara dados de aplicativos.
precisa saber é o seguinte
1
@ user598527 Você provavelmente removeu alguns deles (existem muitos Xbox AppX), mas acho que o backbone principal do Xbox não é desinstalável. Ao rodar Get-AppxPackage | Select Name, PackageFullNameno PowerShell, você pode ver que ainda possui o Xbox AppX em seu sistema. Eu acho que você pode remover a barra de jogo, se você parar e desactivar os serviços do Xbox (Provavelmente Xbox Live Networking Service)
Ryakna