HOWTO: 重置 Windows 更新组件
HOWTO: 重置 Windows 更新组件
这几天一直被 KB3189866 这个更新困扰着,两台设备都是卡在45%不再继续。像以往一样停止 Windows Update 服务去删除“SoftwareDistribution”目录发现有几个文件提示正在被使用无法删除,禁用 WU 服务重启再试无果。看来从 14393 开始 Windows Update 的运行机制发生了比较大的改变,貌似与“更新来自多个位置”有关,这个功能允许该电脑将以前下载的 Windows 更新和应用发送到本地网络上的电脑或 Internet 上的电脑,从而起到加快下载速度的目标。
那么现在该如何正确的重置Windows更新组件呢?!首先要停止与更新相关联的所有服务,不再单单只是 Windows Update,需要停止的服务如下:
- net stop bits
- net stop wuauserv
- net stop appidsvc
- net stop cryptsvc
然后删除更新相关目录和文件:
- Del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat"
- Del “%systemroot%\SoftwareDistribution”
- Del “%systemroot%\system32\catroot2”
最后重新启动电脑,再次执行更新应该就能解决常见的更新故障,如果依旧有问题可以常识重置 BITS 和 WU 的安全描述符,为此执行如下命令行:
- 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)
也可以常识重新注册相关服务的动态链接库:
regsvr32.exe atl.dll
regsvr32.exe urlmon.dll
regsvr32.exe mshtml.dll
regsvr32.exe shdocvw.dll
regsvr32.exe browseui.dll
regsvr32.exe jscript.dll
regsvr32.exe vbscript.dll
regsvr32.exe scrrun.dll
regsvr32.exe msxml.dll
regsvr32.exe msxml3.dll
regsvr32.exe msxml6.dll
regsvr32.exe actxprxy.dll
regsvr32.exe softpub.dll
regsvr32.exe wintrust.dll
regsvr32.exe dssenh.dll
regsvr32.exe rsaenh.dll
regsvr32.exe gpkcsp.dll
regsvr32.exe sccbase.dll
regsvr32.exe slbcsp.dll
regsvr32.exe cryptdlg.dll
regsvr32.exe oleaut32.dll
regsvr32.exe ole32.dll
regsvr32.exe shell32.dll
regsvr32.exe initpki.dll
regsvr32.exe wuapi.dll
regsvr32.exe wuaueng.dll
regsvr32.exe wuaueng1.dll
regsvr32.exe wucltui.dll
regsvr32.exe wups.dll
regsvr32.exe wups2.dll
regsvr32.exe wuweb.dll
regsvr32.exe qmgr.dll
regsvr32.exe qmgrprxy.dll
regsvr32.exe wucltux.dll
regsvr32.exe muweb.dll
regsvr32.exe wuwebv.dll
不要忘记重置 Winsock 可以解决大部分网络访问异常的问题:
netsh winsock reset
同时微软也为我们提供了故障诊断程序,可以自动诊断并修复问题。
- Windows 10 : http://aka.ms/diag_wu
- Windows 8.1、Windows 8 和 Windows 7 : http://go.microsoft.com/?linkid=9830262
HOWTO: 解决资源管理器有两个 OneDrive
HOWTO: 解决资源管理有两个 OneDrive
上周 gOxiA 一个不小心把两个数据盘给误格了,数据损失近 2TB,整整耗费了1周的时间才将数据恢复,由于是主力机所以系统也只能重新安装,Windows 10 1607版,没想到刚安装完就发现一个问题,OneDrive 初始化设置完毕后在资源管理器中竟然看到两个图标目录,位于桌面下,十分诡异!既然是同名同路径,而且图标显示 OneDrive 的状态和右键功能都正常,说明这两个图标应该是通过注册表加载的标识符。
标识符在系统中是具有唯一性的,否则也不可能出现两个同名图标,搜索 MSDN 了解到在注册表中 CLSID 分支存储着系统中所有 COM 类对象的数据,路径位于 “HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{CLSID}”,启动注册表编辑器定位到这个路径开始搜索关键词 OneDrive,看看会有什么收获!如下截图搜索到了很多 OneDrive 相关的标识符,其中有些 CLSID 下包含 ShellFolder 看起来挺有关联。
为了继续验证,启动了 Sysinternals 套件的 Process Monitor 工具对资源管理进行监测,因为重点怀疑的是注册表,并且问题在资源管理器中可以重现,所以进行了过滤,果然收集到了有价值的数据。从截图可以看到当 gOxiA 访问资源管理器的这两个 OneDrive 后,Process Monitor记录下了这两个图标的 CLSID,分别是:
{018D5C66-4533-4307-9B53-224DE2ED1FE6}
{D227B6E2-5C41-4EB2-BD76-51940CFD391F}
既然找到了两个图标的 CLSID 那么就可以在注册表中缩小搜索范围了。继续搜索注册表锁定了问题范围,从下面截图可以看到在下面两个路径下存在 CLSID 记录,从注册表项的名称看确有关联。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel
下来尝试修改“HideDesktopIcons”-“NewStartPanel” 下相关的 CLSID 值改为为 0,不隐藏图标进行测试。(注意:在进行注册表操作前一定要进行备份!!!)刷新桌面,可以看到出现了两个 OneDrive 图标,OK 问题可以锁定了!但奇怪的是当删除其中一个 OneDrive 的 CLSID 后,桌面仍有两个图标,而且资源管理其中也仍旧显示两个图标。尝试删除“Desktop”-“NameSpace” 下的项进行测试,发现两个图标的问题解决了!
虽然问题得到解决了,但是应该删除哪个 CLSID 呢?如何确定这两个 CLSID 哪个才是当前 OneDrive 所使用的呢?翻出之前 Process Monitor 监测的结果,可以看到 OneDrive 的配置项所在的位置。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\OneDrive
顺藤摸瓜再接再厉,找吧!
功夫不负有心人,HKEY_CURRENT_USER\SOFTWARE\Microsoft\OneDrive\Accounts\Personal,下面“NamespaceRootId”记录的 CLSID 值就是当前所使用的,至此可以收官了!
结束前做了一个小测试,删除了当前正在使用的 CLSID 项,发现从系统栏打开 OneDrive 时会报错。此外还有一个问题!虽然删除了资源管理器和桌面中的图标(注册表对应的项和值),但是监测发现,打开资源管理时还是会去读取已经删除的 CLSID,说明仍有残留,可是注册表中已经搜索不到这个 CLSID,检查 OneDrive 的配置文件仍一无所获,也许是一个 Bug 已经提交微软反馈中心,期待后续会彻底解决。(考虑重新做一遍系统,同步数据这事还是靠谱点好!!!)
[Win10]这个工具很好 - 微软快速助手
这个工具很好 - 微软快速助手
在 Windows 10 首个年度更新(Build 10.1.14393)中包含了一个非常有价值的工具 - 微软快速助手,可以方便的让两个用户通过远程连接共享计算机,以便于帮助用户解决计算机上的问题。微软快速助手的使用界面非常直观,需要获取帮助的一方点击“获取协助”,填写提供帮助方的代码就可进行连接,之后点击允许共享屏幕即可让对方远程操作自己的桌面。
这个工具非常的有价值,因为我们不必再购买第三方软件,就能够帮助到自己的亲友解决计算机相关的问题。对于提供协助的一方要启动一次远程协助也是非常方便,在快速助手的开始页面选择“提供协助”,会提示使用Microsoft Account(即LiveID)登录,登录成功后会生成一个6位的共享安全代码,如果在10分钟内未使用这个安全代码将会过期失效。
下面来看看快速助手在连接到对方计算机后的操作界面,界面非常简洁。受助方可以通过顶部的工具条来暂停或停止桌面共享;而帮助方除了可以实时操控对方计算机系统外,还可以利用工具栏提供的功能对当前界面添加批注,也可以快速启动任务管理器。虽然目前的功能很简洁,但是足以满足使用需要。
需要注意的是,你不能使用同一个 Microsoft Account 桌面登录进行远程共享连接,此外微软快速助手的界面看起来很现代,但他仍是一个 EXE 程序,进程名称为“quickassist.exe”,通过对该进程的实时监控发现,微软快速助手的连接机制并未采用点对点方式,而是通过微软站点进行两点的通讯数据中转,在监控窗口可以看到它使用443端口接到微软站点上,就是是443端口应该是加密通讯,除了拥有更好的网络穿透力,还提供了安全的通讯方式,因为需要使用 Microsoft Account 发起共享连接,而且必须通过微软通道中转,从而避免了被乱用的可能,降低了安全风险。
从目前实际的使用状况来看,通讯稳定性和流程性还有待提高,而这一问题的主要根源还是国内用户访问微软的速度,但整体来说还是相当不错了。
最后的温馨提示:要启动微软快速助手可以通过Cortana键入“快速助手”启动,也可以在“Windows 附件”程序组中找到。