BewlyCat 不加载首页视频封面
之前使用的 BewlyBewly/BewlyBewly: Just make a few small changes to your Bilibili homepage. 终止了开发,好在后继有人切换到 keleus/BewlyCat: BewlyCat——基于ewlyBewly开发的Bilibili拓展 上了。近期发现首页点插件侧边栏的刷新按钮,视频封面经常只显示个骨架图,不加载真实封面。
其实不是不加载,只是没轮到它触发懒加载。因为代码中
BewlyCat/src/components/LazyPicture.vue at 56a175ca9eb89858eaff13059c5c9f598fae3b05 · keleus/BewlyCat 用的 Intersection Observer API ,上下滚动一下页面触发就行。怀疑是原地内部元素刷新未触发。
喔,已经有人提了 Issue,刷新后界面视频无法正常显示,需要点击浏览器的刷新按钮 · Issue #486 · keleus/BewlyCat
注册表项访问频率异常
几个月前就在 Process Monitor 观察到 HKLM\Software\Microsoft\WBEM\Tracing 这个位置经常被访问。
找了一个发出请求的 C:\WINDOWS\system32\svchost.exe -k netsvcs -p -s Winmgmt 进程观察调用栈
0 ntoskrnl.exe CmpCallCallBacksEx + 0x283 0xfffff805e463f043 C:\WINDOWS\system32\ntoskrnl.exe
1 ntoskrnl.exe NtQueryValueKey + 0x4c6 0xfffff805e48d4906 C:\WINDOWS\system32\ntoskrnl.exe
2 ntoskrnl.exe KiSystemServiceCopyEnd + 0x28 0xfffff805e44b2258 C:\WINDOWS\system32\ntoskrnl.exe
3 ntdll.dll NtQueryValueKey + 0x14 0x7ffda85e1fa4 C:\WINDOWS\SYSTEM32\ntdll.dll
4 KERNELBASE.dll BaseRegQueryValueInternal + 0x16d 0x7ffda5aed7dd C:\WINDOWS\System32\KERNELBASE.dll
5 KERNELBASE.dll RegQueryValueExW + 0xfb 0x7ffda5aebadb C:\WINDOWS\System32\KERNELBASE.dll
6 wbemcomn.dll DLRegQueryValueExW + 0x4c 0x7ffd8b045840 C:\WINDOWS\SYSTEM32\wbemcomn.dll
7 wbemcomn.dll Registry::GetDWORD + 0x3b 0x7ffd8b04486b C:\WINDOWS\SYSTEM32\wbemcomn.dll
8 wbemcore.dll CWmiArbitrator::MaybeDumpInfoGetWait + 0xb4 0x7ffd88d09004 C:\WINDOWS\system32\wbem\wbemcore.dll
9 wbemcore.dll CWmiArbitrator::Arbitrate + 0x2bb 0x7ffd88d08bab C:\WINDOWS\system32\wbem\wbemcore.dll
10 wbemcore.dll CWmiArbitrator::ReportMemoryUsage + 0x195 0x7ffd88d08715 C:\WINDOWS\system32\wbem\wbemcore.dll
11 wbemcore.dll CWmiFinalizerObj::`vector deleting destructor' + 0xd2 0x7ffd88d391a2 C:\WINDOWS\system32\wbem\wbemcore.dll
12 wbemcore.dll CWmiFinalizer::PullObjects + 0x100 0x7ffd88d05ea0 C:\WINDOWS\system32\wbem\wbemcore.dll
13 wbemcore.dll CWmiFinalizerEnumerator::Next + 0xc9 0x7ffd88d05be9 C:\WINDOWS\system32\wbem\wbemcore.dll
14 wbemess.dll CBasePollingInstruction::ExecQuery + 0x40c 0x7ffd802b54fc C:\WINDOWS\system32\wbem\wbemess.dll
15 wbemess.dll CBasePollingInstruction::staticTimerCallback + 0x17 0x7ffd802b5047 C:\WINDOWS\system32\wbem\wbemess.dll
16 ntdll.dll RtlpTpTimerCallback + 0xe0 0x7ffda84ee9e0 C:\WINDOWS\SYSTEM32\ntdll.dll
17 ntdll.dll TppTimerpExecuteCallback + 0x1b0 0x7ffda84f2dc0 C:\WINDOWS\SYSTEM32\ntdll.dll
18 ntdll.dll TppWorkerThread + 0x80d 0x7ffda84f63cd C:\WINDOWS\SYSTEM32\ntdll.dll
19 KERNEL32.DLL BaseThreadInitThunk + 0x17 0x7ffda722e8d7 C:\WINDOWS\System32\KERNEL32.DLL
20 ntdll.dll RtlUserThreadStart + 0x2c 0x7ffda850c53c C:\WINDOWS\SYSTEM32\ntdll.dll
反正是没找出调用源,在干净的虚拟机上观察也有大量调用,不会是 Process Monitor 自己吧?
然后找到这个 svchost.exe,终结了它,写入动作就干净没了。
Activity Watcher
还有另一条路径,在事件查看器中导航到 应用程序和服务日志 -> Microsoft -> Windows -> WMI-Activity -> Operational,查找标记为错误或高频出现的 ID 5857/5858 的事件。
刚好有一条错误信息 操作 = Start IWbemServices::ExecQuery - root\cimv2 : SELECT Name FROM Win32_Process WHERE ProcessId = -1094023312;ResultCode = 0x80041017;PossibleCause = Unknown,对应的 ClientProcessId 字段指向 aw-watcher-window.exe
翻了翻 代码 确实是通过 WMI 协议获取应用程序名的。但看它其实只是个 falblack 分支,不是罪魁祸首。
但它会不断访问 HKCR\TypeLib\{565783C6-CB41-11D1-8B02-00600806D9B6}\1.2\0\win64\(Default) 。Gemini 说这个是 Microsoft WMI Scripting Library (v1.2),在 Python 调用 WMI 对象时会产生,也算符合预期吧。
调高循环间隔来降低调用次数
[aw-watcher-window]
poll_time = 2.0