//RUNAS// 修复更新 import fsys; import service; import console; console.log("Windows 10 如果反复更新失败,或更新后导致系统无法启动, 即使下载新版操作系统安装程序也提示: '无法确定你的电脑能否安装 Win10', 这很可能是因为引导分区导致的问题,解决这个问题的方法: 1.使用 U盘启动 Win10 PE 系统 2.运行 DiskGenius 删除系统硬盘的 ESP、MSR、Recovery 分区,这些分区都很小,小心不要删错了, 3.DiskGenius 里在操作系统硬盘重新创建 ESP 分区 4.打开 DISM++ 修复引导(选中原来的操作系统硬盘,不是PE分区) 5.这里 https://go.microsoft.com/fwlink/?LinkId=691209 下载 MediaCreationTool 安装最新系统 上面的方法仅供参考,使用上面的方案一切风险自负。") console.more(1,true) if(!console.askYesNo("如果你暂时不想尝试重建引导分区的方法, 你可以继续运行本工具尝试重置和修复系统自动更新工具,本工具不作任何保证, 使用本工具一切后果自负,按 Y 键继续操作,按 N 键取消")) return; console.pause(true); var stopService = function(serviceName){ console.showLoading(" 正在停止 " + serviceName + " 服务"); sleep(1000); var ret = service.stop(serviceName); console.log(ret?"成功":"失败"); sleep(3000); } stopService("wuauserv"); stopService("cryptSvc"); stopService("bits"); stopService("msiserver"); import fsys; fsys.enum( io.getSpecial(0x23/*_CSIDL_COMMON_APPDATA*/,"\Application Data\Microsoft\Network\Downloader\"), {"qmgr*.dat","qmgr.db","qmgr.jfm"}, function(dir,filename,fullpath,findData){ if(filename){ console.log("正在删除:"+filename) fsys.delete(fullpath); } } ); var path = io.getSpecial(0x24 /*_CSIDL_WINDOWS*/,"SoftwareDistribution/Download"); fsys.enum( path, "*.*", function(dir,filename,fullpath,findData){ fsys.delete(fullpath) console.log("正在删除",filename:dir) },false ); var path = io.getSpecial(0x24 /*_CSIDL_WINDOWS*/,"SoftwareDistribution/DataStore"); fsys.enum( path, "*.*", function(dir,filename,fullpath,findData){ fsys.delete(fullpath) console.log("正在删除",filename:dir) },false ); console.showLoading("正在重置安全编录数据库文件1"); import fsys.acl; fsys.acl.takeOwn("C:\Windows\system32\catroot2"); var ret = fsys.rename("C:\Windows\system32\catroot2","C:\Windows\system32\catroot2.old"); console.log(ret?"成功":"失败"); console.showLoading("正在重置安全编录数据库文件2"); var ret = fsys.delete("C:\Windows\system32\catroot2.old"); console.log(ret?"成功":"失败"); console.showLoading("正在重置自动更新目录"); import fsys.acl; fsys.acl.takeOwn("C:\Windows\SoftwareDistribution"); var ret = fsys.delete("C:\Windows\SoftwareDistribution"); console.log(ret?"成功":"失败"); import process.batch; var prcs = process.batch.wow64(` sc.exe sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU) sc.exe sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU) for %%1 in (%windir%\system32\*.dll) do regsvr32.exe /s %%1 netsh winsock reset bitsadmin.exe /reset /allusers `) for( all,out,err in prcs.each() ){ io.stdout.write( out,err ); } var startService = function(serviceName){ console.showLoading(" 正在启动 " + serviceName + " 服务"); sleep(1000); var srvMgr = service.manager(); srvMgr.startAutomatic(serviceName); var ret = srvMgr.isRunning(serviceName) || srvMgr.start(serviceName); console.log(ret?"成功":"失败"); sleep(3000); } startService("wuauserv"); startService("cryptSvc"); startService("bits"); startService("msiserver"); var prcs = process.batch.wow64(` wuauclt /resetauthorization wuauclt /detectnow usoclient startscan `) for( all,out,err in prcs.each() ){ io.stdout.write( out,err ); } if( console.askYesNo("是否调用 DISM 修复系统文件") ) { /* /Online 选项指的是修复当前正在运行的 Windows 系统。 也可以修复其他分区未加载的 Windows ,例如加上用C:\Windows去修复 D:\ 盘的 Windows process("DISM.exe /Image:D:\ /Cleanup-image /Restorehealth /Source:C:\Windows") */ import process; process("DISM.exe /Online /Cleanup-image /Restorehealth").wait() //sfc /scannow 命令将扫描所有受保护的系统文件,并用位于 %WinDir%\System32\dllcache 的压缩文件夹中的缓存副本替换损坏的文件。 //process("sfc /scannow").wait(); } if( console.askYesNo("是否下载并运行微软升级系统工具 MediaCreationTool") ) { import fsys.wow64; fsys.wow64.disableRedirection( function(){ import inet.installer inet.installer("MediaCreationTool","https://go.microsoft.com/fwlink/?LinkId=691209") } ) } console.log("全部操作已完成。"); console.pause(true);