Начиная с Windows 10 1703 (Creators Update) в системе появилось несколько новых встроенных современных приложений, удалить которые из системы стандартным способом не удается. К примеру, при попытке удалить новые встроенные приложения с помощью командлета Remove-AppxPackage появляется ошибка “HRESULT 0x80073CFA Removal failed”. В этой статье рассмотрим трюк, позволяющий принудительно удалить любые ненужные встроенные приложения Windows 10.
Допустим, при попытке удалить встроенное универсальное приложение у вас появилась ошибка:
Remove-AppxPackage : Deployment failed with HRESULT: 0x80073CFA, Removal failed. Please contact your software vendor.
(Exception from HRESULT: 0x80073CFA)
error 0x80070032: AppX Deployment Remove operation on package
Microsoft.XboxGameCallableUI_1000.16299.15.0_neutral_neutral_cw5n1h2txyewy from:
C:\Windows\SystemApps\Microsoft.XboxGameCallableUI_cw5n1h2txyewy failed. This app is part of Windows and cannot be
uninstalled on a per-user basis. An administrator can attempt to remove the app from the computer using Turn Windows
Features on or off. However, it may not be possible to uninstall the app.
NOTE: For additional information, look for [ActivityId] a25a8aef-dacf-0001-a048-5ba2cfdad301 in the Event Log or use
the command line Get-AppxLog -ActivityID a25a8aef-dacf-0001-a048-5ba2cfdad301
At line:1 char:1
+ Remove-AppxPackage Microsoft.XboxGameCallableUI_1000.16299.15.0_neutr …
+ ~~
+ CategoryInfo : WriteError: (Microsoft.XboxG…l_cw5n1h2txyewy:String) [Remove-AppxPackage], IOException
+ FullyQualifiedErrorId : DeploymentError, Microsoft.Windows.Appx.PackageManager.Commands.RemoveAppxPackageCommand
или
Remove-AppxPackage: сбой развертывания с HRESULT: 0x80073CFA, сбой удаления. Обратитесь к поставщику программного обеспечения. (Исключение из HRESULT: 0x80073CFA) ошибка 0x80070032: развертывание AppX Удалить операцию в пакете PeopleExperienceHost_10.0.16299.15_neutral_neutral_cw5n1h2t. из: C:\Program Files\WindowsApps\ PeopleExperienceHost_10.0.16299.15_neutral_neutral_cw5n1h2t failed.
Это приложение является частью Windows и не может быть удалено для каждого пользователя. Администратор может попытаться удалить приложение с компьютера, включив или выключив функции Windows. Однако удаление приложений может оказаться невозможным.
Для удаления приложения нам понадобятся две утилиты:
- Psexec от Sysinternals
- DB Browser for SQLite (http://sqlitebrowser.org/)
- Скачайте архив с pstools.zip и распакуйте его в каталог C:\PS, затем установите (или скачайте portable версию) DB Browser for SQLite.
- С помощью psexec запустим интерактивную командную от имени системы (System):
psexec.exe -i -s -d cmd.exe
- Теперь в открывшемся окне запустите от имени системы исполняемый файл “C:\Program Files\DB Browser for SQLite\DB Browser for SQLite.exe” или SQLiteDatabaseBrowserPortable.exe.
- Затем в окне DB Browser нажмите на кнопку Open Database и откройте следующий файл %ProgramData%\Microsoft\Windows\AppRepository\StateRepository-Machine.srd
- Перейдите на вкладку Browse Data и выберите в таблицу Package.
- Теперь в колонке PackageFullName найдите имя приложения, которое не удается удалить (в нашем примере это Microsoft.XboxGameCallableUI_cw5n1h2txyewy.) Для данного приложения измените значение столбца IsInbox с 1 на 0.
- Сохраните изменения в файле File->Write changes (или комбинацией CTRL+S).
- Теперь попробуйте удалить приложение:
Remove-AppxPackage Microsoft.XboxGameCallableUI_1000.16299.15.0_neutral_neutral_cw5n1h2txyewy
- Оно должно удалится без ошибок
Поискав информацию в сети, я нашел упоминания, что флаг IsInbox для встроенных приложений в локальной системной базе приложений Windows появился начиная с Windows 10 Anniversary update. При попытке удалить встроенное приложение с включенным флагом IsInbox как раз и появляется ошибка 0x80073CFA.
Проделал всё это, нихрена не удаляет всё равно пишет вот это
remove-appxpackage : Сбой развертывания с HRESULT: 0x80073CFA, Сбой удаления. Обратитесь к поставщику программного обес
печения. (Исключение из HRESULT: 0x80073CFA)
Операция Remove прервана диспетчером пакетов, так как был передан недопустимый аргумент: Microsoft.ForzaHorizon3HotWhee
ls.0cda755986_1.0.63.2_neutral__8wekyb3d8bbwe.xml.
ПРИМЕЧАНИЕ. Чтобы получить дополнительные сведения, найдите [ActivityId] 04c054c1-9d41-0000-bad2-c304419dd401 в журнале
событий или введите в командной строке Get-AppxLog -ActivityID 04c054c1-9d41-0000-bad2-c304419dd401.
строка:1 знак:1
+ remove-appxpackage Microsoft.ForzaHorizon3HotWheels.0cda755986_1.0.63 …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Forza…ekyb3d8bbwe.xml:String) [Remove-AppxPackage], IOException
+ FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.RemoveAppxPackageCommand
Вы проделали все шаги инструкции для пакета Microsoft.ForzaHorizon3HotWheels_8wekyb3d8bbwe? В теории может быть несколько проблемных пакетов, нужно установить атрибут IsInbox для каждого.
no such function: workid
Вероятно кто-то столкнется с ошибкой «no such function: workid» при попытке изменения поля «IsInbox» в программе «DB Browser for SQLite».
Решение:
В БД найти триггер «TRG_AFTER_UPDATE_Package_SRJournal» , скопировать объявление этого триггера «CREATE TRIGGER TRG_AF…….», временно сохранить себе эту строку объявления, удалить этот триггер из БД, теперь можно изменять поля «IsInbox», далее нужно вернуть триггер обратно в БД, выполняем SQL запрос вставив сохраненную строку объявления триггера.
Поподробней можно?
1. После открытия файла
%ProgramData%\Microsoft\Windows\AppRepository\StateRepository-Machine.srd
в «DB Browser for SQLite», на закладке «Database Structure» (Структура БД) сворачиваем ветви «Таблицы», «Индексы», «Представления», оставляя развёрнутыми только «Триггеры».
2. В триггерах ищем триггер
TRG_AFTER_UPDATE_Package_SRJournal
щёлкаем по нему правой мышкой и в появившемся меню выбираем «Копировать CREATE выражение».
Скопированное выражение сохраняем в текстовый файл, что бы оно сохранилось.
3. Переходим на вкладку «Browse Data» (Данные) и ДО 7-го пункта: делаем всё в соответствии со статьёй.
«7. Сохраните изменения в файле File -> Write changes (Файл -> Записать изменения) (или комбинацией CTRL+S).»
4. ПЕРЕД тем, как выполнять 7-ой пункт, переходим на вкладку SQL вставляем сохранённое в текстовом файле «CREATE выражение», что-то там такое:
CREATE TRIGGER TRG_AFTER_UPDATE_Package_SRJournal…
Нажимаем F5, что бы создать триггер заново.
5. Продолжаем дальше, в соответствии со статьёй, c 7-го пункта.
P.S. Сам задолбался искать, как всё это делается. :))
По пп. 2 небольшая поправка:
Сейчас вместо КОПИРОВАТЬ Create Выражение нужно выбирать Модифицировать. В новом окне откроются 2 строки, первая DROP, вторя CREATE.
Перед записью данных необходимо выполнить строку DROP, записать данные, затем выполнить строку CREATE и сохранить изменения в БД.
Подскажите, как вернуть триггер обратно?
Всё, не надо. Разобрался сам как вернуть.
Сорян, что поднимаю старую тему, у меня было все тоже самое, что и в посте. Бился целый день. Но, гениальное как всегда просто: на каком то буржуйском сайте, подглядел. Чел ответил, что создал нового локального админа, зашел под ним, удалил старого, и sysprep заработал….
Проверил у себя и к сожалению простой путь не работает. Ошибка на месте sysprep на той же ошибке. Удаление poewershell и ошибка 0x80073cfa
VolArtDev, спасибо дружище, реально очень помог! :)))
В образе не нашёл файла StateRepository-Machine.srd
Какой билд Windows 10? В 20H2 файл все еще есть… Постарше версий под рукой нет посмотреть….
ни в W10 ни в W11 нет файла.
поиск не находит.
где он должен быть?
Ищите в скрытых файлах…
на рабочей системе файл есть, а в образе нет.
При попытке изменить значение IsInbox в таблице Package появляется ошибка и не дает сохранить новое значение IsInbox
DB Browser for SQLite
—————————
Erro modificando dados:
no such function: is_srjournal_enabled
Всё нашлось. 20Н2…
У кого не находит
«C:\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd»
Не пробовали на AppRepository смену владельца и полный доступ своему пользюку?
Делаю копию таблицы, там же в DB Browser for SQLite, смотрю её по выгрузке и всё так.
Просто ОГРОМНЯК!
Господа, воистину хорошее дело делаете.
Огромное человеческое спасибо, и +100 к карме каждому.
При удалении приложений других пользователей даже с ключами -AllUser все равно выдается ошибка. Ключ IsInbox никак на результат не влияет. Если профиль пользователя удален, единственный сработавший способ (утащенный отсюда https://stackoverflow.com/a/33604246 ) это посмотрев в таблице Package номер приложения, на котором спотыкается sysprep, изменить в таблице PackageUser идентификатор юзера для этого приложения, чтобы юзер был реальный. Идентификаторы нужно посмотреть в таблице User по SIDам пользователей. Да, прежде чем изменить значение в таблице, надо выполнить строку DROP из триггера, а после изменения выполнить строку CREATE. После базу сохранить, перезагрузиться и пробовать удалить приложение из-под того юзера, чей идентификатор прописали. Повторить трюк для каждого «осиротевшего» приложения, на котором ломается sysprep. Полное имя приложения берется из журнала %WINDIR%\System32\Sysprep\Panther\setupact.log
У кого вылетает sql при попытке открытия любого окна с проводником, то запускайте его сразу с указанием пути к базе как параметр
«DB Browser for SQLCipher» %ProgramData%\Microsoft\Windows\AppRepository\StateRepository-Machine.srd