|
本帖最后由 yiyu2012 于 2021-11-22 11:11 编辑
维护了几年的windows系统长久以来有个小问题,错误代码0x80070057无法自动更新和通过商店自动安装metro应用, 网上错误代码0x80070057的解决办法,只找到修改“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX”下“IsConvergedUpdateStackEnabled” 项为0的办法,但无任何效果。只好通过商店下载应用缓存,再使用powershell命令更新metro应用,系统补丁则通过dism++更新。这次维护,先是排除了服务问题,而后又尝试重置策略组。最终找到问题原因是开机脚本中的subst命令:subst B: "G:\OneDrive云盘",挂载G盘上的onedrive云盘为B盘。这一命令造成windows update无法安装更新,微软商店无法安装应用,只能说bug10名不虚传。
metro应用的数据除了注册表内容,实际的文件主要三部分组成:
程序 C:\Program Files\WindowsApps
安装记录 C:\ProgramData\Microsoft\Windows\AppRepository
用户数据 C:\Users\%username%\AppData\Local\Packages
其中程序和安装记录得放在系统盘,而用户数据可以通过目录链接转移到别的分区。直接删除程序文件夹会残留安装记录,即使通过dism++清理残余Appx组件也是无法清理干净的。有残余记录时,powershell重装metro应用会提示找不到C:\AppxManifest.xml,要去除提示,就只有删除安装记录.srd*文件,再通过AppxManifest.xml重装应用了。而这三部分文件夹,可以通过三方工具打包成wim镜像,在保留文件夹权限的同时应用到别的系统分区,以替换原文件夹的形式进行移植。要注意的是,此种方法移植的metro应用,需要应用users权限到文件夹所有者再通过powershell运行重装命令后才能正常使用,而在windows通过镜像进行升级安装后还需要重复此操作。
重置安全策略和策略组
- secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose
- rd /s /q "%windir%\System32\GroupPolicyUsers"
- rd /s /q "%windir%\System32\GroupPolicy"
- gpupdate /force
重装metro应用
- Get-AppxPackage -AllUsers| Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
通过AppxManifest.xml重装应用:
- Add-AppxPackage -Register "C:\Program Files\WindowsApps\*\AppxManifest.xml" -DisableDevelopmentMode
- Add-AppxPackage -Register "C:\Windows\SystemApps\*\AppxManifest.xml" -DisableDevelopmentMode
删除应用安装记录,pe下提权运行- @echo off
- :INPUTdrive
- set tgdrive=J:
- set /p tgdrive=请输入要修改的系统盘(如%tgdrive%):
- if not exist "%tgdrive%\*" (if exist "%tgdrive%:\*" (set "tgdrive=%tgdrive%:") else (goto :INPUTdrive))
- del %tgdrive%\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Deployment.srd /f
- del %tgdrive%\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Deployment.srd-shm /f
- del %tgdrive%\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Deployment.srd-wal /f
- del %tgdrive%\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd /f
- del %tgdrive%\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd-shm /f
- del %tgdrive%\ProgramData\Microsoft\Windows\AppRepository\StateRepository-Machine.srd-wal /f
- pause
|
|