PowerShellを使用してUniversal Appsをアンインストールできません


12

障害に遭遇したとき、私は新しいWindows 10インストールからすべてのユニバーサルアプリをアンインストールする過程にありました。

これを行うのは初めてではなく、常にうまくいきます。ただし、今回は、PowerShell

Get-AppxPackage -allusers | Remove-AppxPackage

などでより具体的に何かを書くと

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

、次のメッセージが表示されます。

Remove-AppxPackage:展開はHRESULTで失敗しました:0x80073CFA、削除に失敗しました。ソフトウェアベンダーにお問い合わせください。(HRESULTからの例外:0x80073CFA)エラー0x80070032:AppX DeploymentパッケージMicrosoft.WindowsCalculator_10.1605.1582.0_x64__8wekyb3d8bbweの削除操作:C:\ Program Files \ WindowsApps \ Microsoft.WindowsCalculator_10.1605.1582.0_x64__8wekyb3d8bbweが失敗しました。

このアプリはWindowsの一部であり、ユーザーごとにアンインストールすることはできません。管理者は、[Windowsの機能の有効化または無効化]を使用して、コンピューターからアプリの削除を試みることができます。ただし、アプリをアンインストールできない場合があります。

注:詳細については、イベントログで[ActivityId] 75c5fc31-fb20-0001-77fd-c57520fbd101を探すか、コマンドラインGet-AppxLog -ActivityID 75c5fc31-fb20-0001-77fd-c57520fbd101を使用してください

1行目:char: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ネットで見つけたハックをチェックしましたか?
magicandre1981

回答:


5

Windows 10 Anniversaryアップデートから、Microsoft は受信トレイアプリ用の新しいエントリIsInboxをSQLiteデータベースに追加しましたC:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd。としてフラグが付けられたアプリappを削除しようとするとIsInbox失敗し0x80073CFAます。

しかし、2017年4月発見されたい回避策があります。

SQLiteのProcessHackerおよびDB Browserツールをダウンロードしてインストールする必要があります。

  • ProcessHacker 2を管理者として実行C:\Windows\System32\svchost.exeし、aを選択し、右クリックしてMisc-> を選択しますRun as this user

ここに画像の説明を入力してください

ここで選択しC:\Program Files\DB Browser for SQLite\DB Browser for SQLite.exeて開始します。SQLite Browserで、をクリックしますOpen database

ここに画像の説明を入力してください

ファイルを開きますC:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd(開くダイアログのファイルタイプをすべてのファイルに変更して表示します)。

次に、Browse Dataタブをクリックして、表をPackage

ここに画像の説明を入力してください

今、あなたは削除し、列に1を変更したいアプリを選択IsInboxする0と、変更を保存します。

ここに画像の説明を入力してください

削除するすべてのアプリに対してこれを繰り返します。Powersehllコマンドが機能するようになります。

しかし著者は、インボックスアプリが削除された場合、Microsoftは新しいWindowsビルドへのアップグレードをブロックすると書いています。そのため、これに留意してください。


この情報をありがとう。壊れたストアアプリケーションを手動で削除するのに役立ちました。他の方法では削除できませんでした(電源シェルが含まれています)。
ElDog

これは後のWindows 10ビルドでは機能しなくなったようです。現在、データベースにはユーザー定義関数を実行するトリガーが含まれているため、読み込みアプリケーションが必要な関数をインストールしない場合、更新は失敗します(「エラー:そのような関数はありません:workid」)。
ティムシルベスター

@TimSylvesterどのアプリをアンインストールしますか?1903年には、より多くの受信トレイアプリをアンインストールできます。
magicandre1981

3

ポスト システムクリーンの削除(バイパスエラー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にまったく同じエラーメッセージが表示されます。
リャクナ

PowerShellが「管理者として実行」で呼び出されたときにこれが引き続き発生する場合、そのコンピューターで何かが非常に間違っています。これがストアの問題である場合は、Windows 10でWindowsストアとアプリの問題を修正するための次の5つのヒントを試してください。
harrymc

@harrymcを使用して動作しませんでした$packageBase = "xboxapp", "officehub", "skypeapp"
JinSnow

2

Windows Anniversaryの更新では、コルタナや公式の手段でアプリを削除するなど、特定の機能をオフにできないようにかなりの数の変更が行われました。Microsoftのxboxアプリのような一部のアプリは、システムにとって重要なアプリであると見なしているため、公式に削除することはできません。

スタートメニューに移動した場合は、右クリックして[アンインストール]をクリックします。逆に、スタートボタンを右クリックして設定に移動し、そこからアプリと機能をアンインストールします。

これらのアプリを削除することに固執している場合。それらは保持されているC:\windows\SystemAppsので、保持されているフォルダーを見つけてそのフォルダーを削除するか_、名前を末尾にアンダースコアなどの文字を追加して安全なオプションを選択することができます。

追加するには、フォルダーを削除するか、systemappsフォルダー内で名前を変更する場合、これは技術的にはアンインストールではなく、強制的に削除するだけです。 systemappsフォルダーにはないが使用されているか、フォルダーの名前を変更した場合は強制的に実行されません。

Ryaknaが以下のコメントで述べたように、これらのオプションのいずれか2つを使用すると、後で問題が発生する可能性がありますが、私の経験から、更新などの問題にまだ遭遇していません。ただし、powershellを使い慣れている場合、またはプログラムと機能のオプションまたはメニューオプションを使用して、公式な方法でアンインストールすることをお勧めします。SystemAppsフォルダには、あなたがこれを行うかのように、あなたはsystemappsフォルダ内のフォルダの名前を変更または削除した場合よりも、最も可能性の高い出会いの問題を意志、名前変更または削除すべきではありません。


御時間ありがとうございます。問題は、このWindowsイメージが11月のものであり、まだインターネットに接続されていないため、更新されていないことです。さらに、同じ方法を使用して最新のWindows 10からストアと計算機をアンインストールしようとしましたが、問題なく実行できました。
リャクナ

@Ryaknaああ、まあ、誰かがそれらを削除する別の方法を知りたい場合は、そこに私の答えを残します笑
-Frostalf

SystemAppsフォルダーの名前を変更できません。BleachBitを使用してXboxアプリフォルダーを削除する必要がありましたが、公式の手段では不可能でした。Xboxアプリはまだインストールされてい~\Windows\System32ます。ゲームバーのプロセスの場所はです。削除GameBar*してGamePanel*そこにファイルを保存しても安全ですか?
user598527

@ user598527公式の手段(つまりPowerShell)でアプリをアンインストールせず、フォルダーを削除または名前変更するだけでは、アプリは実際にはアンインストールされず、後で問題が発生する可能性があります。またSystemApps、Windows 10に不可欠であるため、フォルダーの名前を変更しないでください。WindowsUniversal AppsフォルダーはC:\Windows\SystemApps、システムアプリファイル、C:\Program Files\WindowsApps他のアプリファイル、およびC:\Users\Ryakna\AppData\Local\Packagesアプリデータ用です。
リャクナ

1
@ user598527おそらくそれらのいくつかを削除しました(Xbox AppXがたくさんあります)が、メインのXboxバックボーンはアンインストールできないと思います。実行することでGet-AppxPackage | Select Name, PackageFullNamePowerShellの上で、あなたはまだあなたのシステム内でのXbox APPXを持って見ることができます。Xboxサービスを停止して無効にすると、ゲームバーを削除できると思います(おそらくXbox Live Networking Service
リャクナ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.