aardio 文档
aardio 范例:RUNAS// 修复更新
//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);
Markdown 格式