第二次重置 Windows——Scoop 的新篇章

起因

记事里说过了 Edge 的事情,这个可以算是直接原因。

不过其实本来我寒假就有重装的计划,而这个的缘由主要是 Windows 更新失败。反正怎么看都是微软的锅就是了。

此外其实还有一点原因,不过没那么主要:比如说上一次重装其实不够彻底,同时选择的是设置页的重置,重装完后联想下了一窝崽,这让我耿耿于怀;比如说了解了一下 Scoop,感觉可以改善我软件管理的混乱局面;比如说感觉系统已经「脏了」,例如给 Qt 之类的玩意侵犯了,即使踹开了仍然在注册表之类的地方留着痕迹;此外运行久了也积攒了不少「污垢」,正好来个大清洗。

因此我,在 2025 除夕这一天,开始了重置的工作。而现在距离春节还有不到 5 分钟,我来简单汇报一下到目前为止的进展。祝除夕、春节快乐,希望我明天春节能完成吧。

备份

重置的最重要的前置工作就是备份了。

这次不像上次一样,D 盘数据盘不受影响可以不备份,只需要备份家目录、AppData 等处就可以了。这次我计划的是完完全全、彻彻底底的重置,因此就有必要进行备份。

到点了,春节快乐!烟花、鞭炮声猛地就增强了。

总共备份了 100G 多一点,WSL 功不可没,占了一半。不过话说回来,WSL 实际占据应该是 40G 左右,但是移动过去就变成 50+G 了,后面看看能不能挤点水出来。

然后下面是专门记录的备份内容。

  • 杂项:
    1. 用户环境变量:HKEY_CURRENT_USER\Environment
    2. 全局环境变量:HKEY_USERS 中有一个很长的,不带 class 的,在里面的 Environment
  • 软件:
    1. WSL:专门目录,还有 ~/.wslconfig
  • D 盘软件:(后面还是集中在 AppData,大的迁移吧,太乱了)
    1. Anki:在专门目录,此外还有环境变量。
    2. BCU:BCUninstaller.settings
    3. Calibre2:%APPDATA%/calibre。这个目录是 Calibre 的设置与 ebook-viewer 的配置,电子书是在另外专门的目录的。
    4. Clash:~/.config/clash
    5. Doxygen:无,纯工具。
    6. Everything:Everything.ini, IbEverythingExt.yaml。补充,漏掉了插件,不过插件倒没啥关系,没设置多少。后面补充,IbEverythingExt.yaml 是我以为的插件设置,实际上是在 IbEverythingExt/config.yaml,这个没备份,不过没设置多少。
    7. FFmpeg:无,纯工具。
    8. GeoGebra:%APPDATA%/GeoGebra 5.0/prefs
    9. Git:~/.gitconfig
    10. GoldenDict:content, portable(已删除 index 以减小体积)
    11. Graphviz:无,纯工具。
    12. gs:无,纯工具。
    13. Honeyview:HKEY_CURRENT_USER\Software\Honeyview,后面会说明不能直接用。
    14. Internet Download Manager:HKEY_CURRENT_USER\Software\DownloadManager
    15. LAV Filters:无,纯工具。
    16. madVR:无,纯工具。
    17. Microsoft VS Code:data(可能要重命名,因为 data 里面有文件名很长), Update.bat, VSCode.reg。更新脚本后面没什么用了。
    18. mkvtoolnix:无,纯工具。
    19. msys64:无。但是要重装 clang64 开发环境。
    20. Neovim:%LOCALAPPDATA%/nvim, %LOCALAPPDATA%/nvim-data,不过跟 WSL 一致就行了,这个不管了,实际没有备份。
    21. NodeJS:无,纯开发环境。
    22. OBS:无,没设置过。
    23. PeerBanHelper:data, qBittorrent.pyw。这是附带的启动 qBittorrent 的脚本。
    24. PotPlayer:HKEY_CURRENT_USER\Software\DAUM,跟 Honeyview 一样,注册表设置不能直接用,不愧是一家出来的。
    25. Python:无。可以看看能不能不装基础环境?前面这句是准备时写的,最后还是装了,还不止一个(主要是为了可能抛弃 Conda)。
    26. qBittorrent:%LOCALAPPDATA%/qBittorrent
    27. QQNT:专门目录。不过恢复时不知道为何改不了数据路径了。
    28. ripgrep:无,纯工具,也没配置过。
    29. Sandboxie-Plus:Sandboxie-Plus.ini, Sandboxie.ini。这个备份记录时忘记说了沙盒,但是有备份。
    30. ScreenToGif:Settings.xaml
    31. SeaDrive:无,到时候直接安装就完事了。
    32. ShowKeyBoard:导出了设置。修饰到这里才发觉还没装这个。
    33. Snipaste:config.ini
    34. SumatraPDF:SumatraPDF-settings.txt
    35. texlive:无。不过这个重装可能有点麻烦?因为只保留了基本的,到时候记录一下过程。
    36. TrafficMonitor:config.ini, global_cfg.ini。这个忘记备份插件和插件设置了,不过小问题,就一个,设置也就弄了一个。
    37. Tuba Toolbox:无,纯移动工具。
    38. Vim:.gvimrc, ~/.vimrc, ~/vimfiles,还有为 JetBrains 和 VS Code 配的 ~/.ideavimrc, ~/.vscvimrc,以及 OJ ~/.ojvimrc。其实后面几个放家目录不太合适,有时间可以弄弄。
    39. Virtual Audio Cable:无。甚至可以不保留,这玩意最初是为了翻译字幕的,只是迟迟没有派上用场。
    40. WeChat:专门目录。
    41. WeMeet:无。这个重装是比较另类的。
    42. Wolfram Research:无,重新安装后设置也没配。
    43. xmake:无,纯工具。
  • C 盘软件:
    1. AutoHotkey:无,纯工具。
    2. Docker:~/.docker, %APPDATA%/Docker, %APPDATA%/Docker Desktop, %LOCALAPPDATA%/Docker
    3. Edge:%LOCALAPPDATA%/Microsoft/Edge/User Data/Default 备份一下意思意思,反正也都是垃圾。
    4. GitHub CLI:重装吧。
    5. PowerShell:无。说是无,其实有的,就是 PowerShell 的配置文件。好在其实在「文档」里面,而文档正好有 OneDrive 备份。
    6. PowerToys:手动备份到 OneDrive,插件在 %LOCALAPPDATA%/Microsoft/PowerToys/PowerToys Run(另外 TOTP 要手动导出!)。这个 TOTP 下面会稍微提一下。
    7. starship:无,新装的玩意,为了 WSL 进入 /mnt 时不被 Git 拖慢速度而准备的,实际感觉好像也没快多少。
  • 包软件 %LOCALAPPDATA%/Packages:(只复制过去一点认识的,且只复制设置)
    1. NanaZip:这个备份了 Settings,但是似乎没用?
    2. WTP:这个不在 Settings,在 LocalState
  • ~(上面提过了的可能不会再提)
    1. Bun:纯工具,重装。不过这个和下面讲的 NPM 一样其实有配置的,配了镜像,只是懒得备份了。
    2. .config:只复制认识的且有用的,具体有 clash(上面提过了), uv
    3. .crossnote:MPE 用的,即使用了 Neovim,Vim 上的 Markdown(甚至 VS Code 上的)还是少不了。
    4. .gnupg:GPG
    5. .ssh:SSH
    6. wslu:WSL 用的工具。
    7. Bash 相关:.bash_history, .bash_profile, .inputrc, .minttyrc(这个意义不大了),不过可能会逐渐抛弃 Bash 了,重装 Git 还要带 Bash 吗?这是我重装前的疑问,重装后依旧是带了 Bash。不过我确实要摆脱掉 Windows 里的 Bash 了。
    8. Conda:.condarc。其实意义不大,有了 uv 我不打算装 Conda 了。
    9. NPM:.npmrc
  • AppData(额外的)
    1. pip:%APPDATA%/pip。也就是镜像了大概。
  • ProgramData 的不管了,火绒上次重装后也没配过。
  • Blog 的 .deploy_git 不小心删了,里面应该有 ignore 排除的设置。
  • 启动:%APPDATA%/Microsoft/Windows/Start Menu/Programs/Startup

这就是记录中的全部内容了,其实原记录不是这样的,稍微加了点后面的解释。

备份最开始打算用 7z 减小点体积,无奈太慢了。干脆不要了,直接 zip,其实大小也差不多,但是速度快多了。

这次吃一堑长一智,记得备份任务了,在 %Windir%\System32\Tasks 目录下。

不过倒也没有完全备份,例如词库就忘记备份了,得重新调教了。例如我现在 xnba 不会出现一二两个截然相反的人了,不过一在全新的这里还是在候选里面的。

与之类似的还有 Windows 相关设置完全没有备份,不过其实我也完全不知道该怎么备份,一个一个抄下来吗?可以去查一下。反正现在就是不显示秒了等等。嗯,其实乍一看似乎除了不显示秒了,已经跟之前没啥区别了,顶多就是任务栏右侧图标少了一个 OneDrive 和一个 SeaDrive。但这也是我刚回来就杀搜索、小组件的成果。

双拼方案没有备份,不过这个在博文里面有记录,所以我直接照抄了,问题不大。

然后讲一下上面说的 PowerToys Run TOTP 插件吧,这个可以说还是挺要命的。之前的 2FA 用的是手机上微软的 Authenticator,然后后面发现了一个插件 PowerToys Run TOTP 也能实现。于是我就改用 TOTP 插件了,毕竟这样就不用拿出手机、打开应用、等待加载、指纹识别、记住验证码、输入了,可以直接按几下就成功复制了。

然后前段时间偶然去更新一下 Run 的各插件时发现 README 更新了,还好我有顺便看一眼。增加了重命名、删除、导出等功能。我之前直接修改数据(因为默认的名称会暴露隐私,而且太丑陋了)并不奏效,所以其实我也挺好奇该怎么做,还留过 To Do,现在就确实知道了。

但是最关键的应该是后面说的,在重置电脑时,需要导出才行,因为解密是和电脑账户强关联的,要是我只备份了 AppData,换新电脑就无法解密了。还好有看到这个,不然就寄了。

刚刚打开看了一下,GitHub 已经不一样了,Waline 还是一样的,应该是 TOTP 用了更新的(因为前阵子因为特殊原因关闭过一次 GitHub 的)。此外还有很多(估计剩下全是)都是只在 TOTP 保留的,没弄到 Authenticator 上面(因为太麻烦了,TOTP 之前还需要手动输入二维码识别结果,现在已经可以直接识别二维码了)。这其实是与 TOTP 的说明相悖的——不应将 TOTP 作为唯一的 Authenticator,只是我因为偷懒一直是这么做的。还是得敲响警钟,还好至少 TOTP 的恢复码应该都有备份就是了。

我翻翻备份目录还有什么。哦还有个所有注册表的备份,其实意义可能不大就是了。那应该就差不多没了,在距离一点还有五分钟时,可以进入到正式的重装前置工作中了。

前置工作

重装的流程我参考了 IT 侠的文档使用「微 PE」制作 PE 盘。

还去下载了一个镜像。把链接中的中文改成英文,以避免捆绑一些特供东西。刚刚搜了一下,没发现 PCManager,挺好,就是怕后面再给我推送过来。不过英文就不像中文一样可选择家庭版专业版,而是捆一起了到时候再选。

然后就是找了个最新的 IDM。

挺短的,反正就是照着上面的文档制作了个 PE 盘,然后把镜像丢进去。那么下面就正式进入重装过程的记录。

重装

BIOS

装系统流程基本还是参考 IT 侠的文档,不懂的地方辅以 DeepSeek 指导。

想到上面这句话的时候,我把随意备份的 Edge 数据覆盖了。重新打开后 DeepSeek 要重新登录,微信扫码后还不够让我手机验证,结果根本不行。然后等到正式开始写,去看了看,就可以了。

即使是 GPT 最盛的时候我也没在手机装过 AI(不过也有谷歌框架的原因),DeepSeek 还真是第一个。这个是手机上提问的,最后依照它的建议分了两个区,给了 ESP 分区 300M(这个似乎是默认值)。另外 ESP MSR 分区默认是 2K 对齐,DeepSeek 也在我确认性询问后强烈建议改成 4K 对齐。

这是当时进 PE 系统拍的照片。

然后之前 476G 是 C 盘 200G(其实是 199G),D 盘 276G,使用到最后剩的空间可以约等于,大概就是 C 盘稍微少个 10G 的样子。于是我思虑了一下给 C 盘多分了 20G,这样 D 盘 256 也挺吉利。

然后上面的文档没太看懂了,就让 DeepSeek 教我了,它教我用 Dism++ 的「系统还原」装机。

然后就是朴实无华的等待过程了,刚装完只用了不到 10G。另外也比我预想的快不少。

然后就是重启了,进入 OOBE。

OOBE

OOBE 没网,Shift + F10 然后 oobe\bypassnro 跳过联网。记得刚拿到机子时也是这样的,避免激活。但其实我现在倒不太管,正常来说还是会登录一下的,只是因为驱动的原因,我上不了网,所以先跳过了。

重装确实很彻底,不仅联想捆绑的玩意没见到,连驱动也没有。刚装完时 C 盘只用了 28G,现在已经 113G 了(还得是 WSL)。

解决方法是手机上联想官网,下了个驱动,然后手机插线到电脑上,开启传输文件,然后拿到驱动并安装。安装完后就能联网,同时也能通过更新获取其他驱动了。另外久违的更新界面的绿色——「您使用的是最新版本」,我也总算是见到了。

恢复

第一天

正式进入恢复配置的环节,具体顺序我可能记不太清了,大致回忆一下吧。写了前面的就去睡觉了,明天继续。

应该是先上 Microsoft Store 装了 WTP 和 NanaZip,前者是因为我打算装 Scoop,还有各种命令都需要 WTP,后者是要抛弃默认的压缩解压,为了更便捷。

Scoop 的安装与配置参考的是这篇文章——环境配置指南前置 – Scoop 安装配置教程。也算是我垂涎多时、预谋已久了。

然后还有快速的恢复 Clash,直接进入上网环境。

暂时就先讲这么多吧,毕竟剩下的大部分都是同质的。Scoop 篇明天启动。此外明天还要干很多事情,包括但不限于恢复各种配置、尝试重新配置 Edge 并备份插件、重新配置 Windows 及各种杂七杂八如任务、启动、关闭索引等东西、修复可能存在的路径问题、斩杀掉没有用的废柴、一些美化工作(如背景、图标等,光标写之前已经换好了,另外突然才发现光标和我实际左手握持鼠标的方向是镜像的)等。

另外还有左手握持鼠标非常痛苦,直到重新运行了脚本才重新恢复合适的左右键位置的事情等等。

好了,到春节下午了,在恢复工作开始前先写完昨天的吧。

昨天熬夜加生病,现在又困又累,好想直接开摆了。但是很可惜的是不可以。上午中午摆了会,然后还挑着看了几个春晚的节目,还挺有意思的。

Scoop

Scoop 这真的有点爽啊,装软件一行命令解决,头一回装 Windows 软件这么畅快、舒服。照着备份软件截图中的顺序,一个一个在官网找,然后复制命令、粘贴命令,就安装完了。

我看有的教程说用 Aria2 多线程加速,我试了一下不行,有报错。解决掉报错后还是没速度,加上不用其实速度也不慢,就放弃了。

这是目前已经通过 Scoop 安装的软件。现在恢复工作还没完成,加上也并没有对每个应用进行测试,因此上面的列表只是临时的。

官方的 bucket 大概用了 main, extras, versions, nonportable 这几个,还额外用了一个非官方的 scoopcn

7z 其实是作为一个依赖安装的,由于有了 NanaZip,后面看看能不能卸掉。

像是 bat, delta, fd 等命令行工具我知道有 Scoop 管理的方式,而且看的时候都是全新的,这可以说正合我意。

然后发现还有 QQNT, 微信等,就可以说有点惊讶了。比较可惜的是腾讯会议没有,因此我就只好加了个非官方 bucket。

目前只 hold 了一个 QQNT,因为 QQ 我这边出了点问题。但是其他的可能后面也会 hold 几个,例如 Vim 什么的。

之所以说 VS Code 可以不用 Update.bat,就是因为用 Scoop 管理了。

大概讲一下目前(也就是第一天的成果)使用 Scoop 管理的细节吧。

adb, bat, bun, delta, doxygen, fd, ffmpeg, fzf, gh, git, graphviz, lavfilters-np, madvr, mkvtoolnix, moar, neovim, ripgrep, starship, uv 这些基本上是不需要怎么动的,或者至多配置直接在家目录,不用太关心的。

然后让我对 Scoop 好感更上一层楼的就是 persist 了。装完 Everything 后,我直接把设置迁移到 AppData 那边了,因为像上面说的一样,我给分散的配置折磨得够呛——最方便的就是云的、别的有在安装目录的、有的在 AppData 的(还分 Local 和 Roaming)、有的在注册表的、更有甚者还在 ProgramData 里的(说的就是你,火绒)。于是我就像统一使用 AppData 管理了(之前 Everything 是在安装目录)。

然后后面突然发现了 persist,居然可以直接一起管理配置?!直接震惊了,这也太爽了吧。更让我震惊的是,甚至驯服了 Honeyview, PotPlayer 这样桀骜不驯的使用注册表的顽固。后面看了一下用的是 Portable,这俩居然有 Portable,确实是我孤陋寡闻了。当然,这样我保存的注册表数据就不能直接用了,后面得去看看该怎么办。

当然也不是每个都有这么好的 persist,也不是每个的 persist 都挺好的。例如说 Sandboxie-Plus 就不行,不过不知为何这个是在 nonportable,明明我之前装的就是 Portable。此外翻了翻清单也没看到 persist 相关字样。别的 manifest 有相关改进,可以作为参考。

此外尽管 Everything 有 persist,但是我看了看清单,似乎只保管了一些 Everything 本体的东西,没有管例如插件之类的。

基于这些原因,可能后面我还要自己写点 manifest 改进一下。非官方的 bucket 我会尽量少用。

当然 Scoop 使用 JSON 作为清单,其实也是我感觉不太行的部分。因为我感觉 JSON 作为这样的描述过程的语言,表达能力欠缺了点。看着清单常常出现字符串形式的 PowerShell 命令,就有种怪诞不经的感觉。

还有 Python, Node 什么的环境。Python 还装了个 3.12 版本,因为 Python 应该是会追求最新版本的,这可能不适合固定版本的东西,后面会谈。此外多几个 Python 也许可以为 uv 提供助力,这样就可以不用 Conda 了。只是这两个目前都有一点问题。

另外目前来看,似乎有点像跷跷板,从一头滑向了另一头——从全用安装包到全用 Scoop 管理。Scoop 管理自然是有缺陷的,例如它追求最新版本等(要是有历史版本就更好了,只不过这样就太庞大了,不现实)。然后我在找腾讯会议的 extras 包时还看到推荐使用 WinGet。但是不得不说,这样安装、复原确实方便。能像 NixOS 那样配置决定系统自然是最舒服的,不过显然 Windows 做不到,但退而求其次,这种方式我觉得就是目前的最优解了。

当然目前软件还没装完,或者不是使用 Scoop 管理的,不过已经是极少数了,挨个点名一下吧。

首先是 Anki。Anki 是可以用 Scoop 管理的,只是不是最新版。另外有点惭愧的是这学期有点忙,Anki 翻译没来得及去关注,等我恢复完就去弄。因为尝鲜,还有看翻译效果等原因,我是要安装最新的,这个 Scoop 现有的 manifest 无法做到(也许可以尝试自己写?)。

然后是 AutoHotkey,这个其实也能用 Scoop 管理。原因其一是在闲得到处搜时,已经装了。但这不是主要原因,因为装了 Vim 后我又卸了。主要原因是之前看到过似乎是推荐装到 Program Files 的。我找了一下在 FAQ,大概就是 UAC 的原因。不过其实细看,这只是其中一种途径罢了,实际中我似乎是通过管理员权限这第二条路经解决的。此外这还引申出来一点,我希望管理员权限运行的脚本中,运行的其他程序不使用管理员权限,该怎么做?我在这学期中已经找到了相关的讨论,但还没付诸实际。

还有 GoldenDict-ng,这个也是官方 bucket 没有。其实感觉倒也不用拘泥于官方 bucket?

火绒,这个没有,而且这个我也懒得装 D 盘了(上次没装是因为 BitLocker,这次没了)。

IDM,原因懂得都懂。

PowerShell,因为这个上面文档的作者推荐使用 WinGet 安装,此外还有先有鸡与先有蛋的问题——我 Scoop 就是运行在 PowerShell 上的(虽然说其实可以使用古早的默认的来解决这个问题)。

qBittorrent 和 PeerBanHelper。前者也有,但是正如前面所说的一样,Scoop 追求最新,已经到 5.0.x 了,而我还需要停留在 4.x.x,因此这个没法使用 Scoop 管理。

SeaDrive,这个是官方 bucket 没有。

ShowKeyBoard,这个我挺震惊的,居然有 manifest,当然还是非官方的。

TeX Live,这个官方也没有。此外我是打算装个最小版的,因此可能要手动配一下,同时记录一下过程。

最后应该就是 Wolfram 了,之前叫 Wolfram Mathematica 了,现在似乎不用 Mathematica 这名了。这个即使是非官方也只找到了 Wolfram Engine。

环境

目前环境只弄了 Python 和 NodeJS,只不过双双出问题。

首先是打开 Vim 时会提示 LeaderF 的 Python 问题,这个属于是高三的回忆了。当时通过设置 pythonthreedll 解决了,现在如法炮制,解决了。用的是 Python 3.12 的,而非 Python,原因就是上面所说的固定版本。要是用的是 Python,等到 3.14,那 python313.dll 就出问题了。

然后是 COC 会提示 node not executable。这个是最终设置 g:coc_node_path 解决了。

这两个原因都不明。不过好在,Neovim 的 :checkhealth 似乎没出问题。

Edge

Edge 的设置可能也需要检查一下。用着用着觉得有点不对劲,有种久别重逢的感觉。后面昨晚写的时候,副屏放网页才发觉原来标签栏给我改回顶栏了,难怪这么自然、舒服。当然现在为了节约空间还是换到了侧栏,只是副屏换侧栏似乎不太和谐。

Blog

这个是我猪鼻了,当时备份博客的时候,为了减小体积,结果把 .deploy_git 删掉了……应该删的是 public,最多就是把 .deploy_git 里面除了 .git 的东西删掉。但是我直接大手一挥,Shift + Delete,想哭都没地哭。

当然其实问题不大,上面说了,记得弄排除就好了。然后昨天一点半弄完,提交,挺漫长的,正常,毕竟全删了,我以为就相当于从零 force push 了。就等啊等,push 完后去仓库看一看,直接蒙了,怎么有 500+ commits?

再点开历史,更是震惊,除了最后一个 commit 是正常的公式化提交外,之前的 commit 怎么这么有条理呢?这不是我 Blog 的 commit 吗?

这个公式化提交还把我还没提交的很久之前的脚本改进(因为打算寒假再重写)给提交了。

琢磨着原因估计是 .deploy_git 没了 .git,直接把我 Blog 根目录的 .git 当作它的 Git 了。

后面就是 git reset HEAD~ 先撤回最后一个那个自动的提交,然后要把原本的 .deploy_git.git 恢复。

可是上哪恢复呢?GitHub 能解决。

之前不喜欢的 Activity 页帮了大忙。之前不喜是因为会暴露 force push,从中可以找到悬空 commit,而这其中可能会有隐私信息,如果要清除还要去 GitHub Support 什么的,还挺麻烦的。但是这会可是帮大忙了,要的就是 force push 后的悬空 commit,成功获得了最后一个 commit 的 SHA1。

然后按下面的步骤,就能还原了(工作目录在 .deploy_git):

1
2
3
4
$ git init
$ git remote add origin git@github.com:...
$ git fetch origin <sha1>
$ git reset --hard FETCH_HEAD

当然最后一步其实可能不需要。

此外我之前 .git 里面配置了点东西,这里也一并记一下。首先是 .git/info/exclude,因为 .gitignore 不持久,需要在 .git 里面进行配置。还有就是 .git/config,例如 core.autocrlf 之类的配置了。其他有也暂时想不起来了。

不过这样弄完后 GitHub 缓存似乎还没更新,现在显示我去年有 900+ commits。但是迟早也要删库重弄的,毕竟虽然靠 Activity 恢复了,但是毕竟还是 force push,也可以依葫芦画瓢看到 Blog。

WSL

这个严格来说应该算是第二天的内容了。

昨天只重启了一次,因为要完成更新,后面开启 WSL 服务后一直也没有重启,因此今天就要来检查一下 WSL 了。另外今天开机时顺带把 Secure Boot 开了。

打开 WSL 发现可以顺利打开,但是上面会有 PowerShell 字眼的报错。虽然中文相关的字样因为格式问题显示不出来,但是还是可以轻易地获取答案,是 PowerShell 执行策略的问题。解决方法很简单,执行 set-ExecutionPolicy RemoteSigned -Scope CurrentUser 就行了。

但实际上不行,这个只设置了 pwsh.exe 的,实际上错误的来源应该是 powershell.exe 的,也就是自带的老版。因此解决方法其实还要在前面加一步,先运行 powershell.exe 进入老版 PowerShell,再执行这个命令。

但是我也很好奇,启动 WSL 而已,怎么跟默认 PowerShell 挂上钩的,也许可以查一下,毕竟启动时运行 PowerShell 脚本,可能会拖慢速度什么的。

第二件事就是上面说的「挤水」。

How do I get back unused disk space from Ubuntu on WSL2? 给出了三种方案:

  1. Optimize-VHD
  2. diskpart
  3. 导出再导入

第一种方法要开启 Hyper-V,因为 WSL 不需要开启 Hyper-V 附加功能,我就没开了。而且开了后也得重启什么的,比较麻烦,所以放弃了。

第二种方法试了,报错。

所以只好采用第三种方法了。

这次备份不像上次一样,是导出为 tar 后再导入,而是直接移动 ext4.vhdx,这是因为我发现 WSL 有一个 --import-in-place 选项,可以直接导入 vhdx,既然这样还何苦要导出导入折腾一下呢?虽然体积稍微大了点,移动过去多花了点时间,但备份空间还算充裕,而且比起导出导入的时间,可以说是微不足道。

结果呢最后还是要导出导入,可以说白忙活了。

不过弄完后,居然只有不到 35G 了,我还以为有 40G 呢。

好,大概先写这么多。到四点了,也应该开始今天的工作了,就不用备份的记录了,直接边做边记。现在先交一发。不过感觉今天必是弄不完了,另外今天也别熬夜了,我困死了现在。

第二天

因为是边做边记录,会比较混乱,后面有机会再整理吧(我是不是上一次也这样说过?)。

Windows Terminal Git Bash

虽然说要剥除 Git Bash,但是暂时还是要用着的。

WT 换成 bash.exe,另外不能直接 bash.exe,因为会给搞成 WSL 的,所以得用完整路径,而且路径具体版本号要换成 current。图标路径也换一下。

找到了剥除 Bash 的方法,使用 MinGit。不过暂时还是留着,因为 WT 还要用,此外还有 alias 等,饭要一口口吃。

MSYS2

第一次打开 Clang64 终端不知道冒出了什么,在做初始化的事情,似乎是跟 GPG 后面还报错。后面不小心 Ctrl + C 中断了。

装个环境,先配镜像(现在用校园网联合镜像比较多),再装 Clang 工具链:

1
2
$ sed -i "s#https\?://mirror.msys2.org/#https://mirrors.cernet.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*
$ pacman -S mingw-w64-clang-x86_64-toolchain

共计 1.5G 左右。现在还只是装了,后面能不能用还有待检验。

另外还用 UCRT64 的终端装了个 GCC 工具链:

$ pacman -S mingw-w64-ucrt-x86_64-toolchain

800+M。现在 MSYS2 就有近 4G 了。

qBittorrent

一直头晕晕的,实际上上面说四点了,后面基本啥也没干。

装了 qB,因为偶然发现出了 Re,太震惊了,虽然后面说换成了 Ri,但是看着不太像换了的样子,无论是大小还是名称,赶紧捡下来看看。要是就赚了,而且论收藏的实用性,Re 应该在 M 之上。即使不是,这个大小的 Ri 应该也是力压已经收藏的两个版本。不过奇怪的是,目前见到的 M, Re, Ri,都没看到 Sp,不知道为啥。

因此也附带了 PeerBanHelper。然后才发现 PeerBanHelper 小版本升级是采取补丁的方式,不提供全部文件。

也因为上面的原因,把 SeaDrive 弄下来了。

现在还差一个在移动固态的 OneDrive,三大盘就齐了。但我其实不太想弄这个 OneDrive 了,因为它在移动的上面,导致我每次带笔记本外出,开机第一件事就是趁 OneDrive 不注意,把它退了。而且有两个放一起,有时候顺序还会调换,还不能退错了。基本都是靠开机缓慢的时机退,不然等一段时间了后,刚重新加载,还没来得及去点,就立刻又弹出来了。

那放数据盘 D 盘?其实也不太喜欢,两个 100G 的太别扭了,目前的 100G + 300G 还是够的,加一个定位不清晰。

所以暂时先搁置了。

AutoHotkey

还有点事情,AutoHotkey 脚本虽然可以运行了,但还没有对新系统进行适配。不过这些都是小问题,相较于还有很多应用还没恢复配置来说简直微不足道,不就是改几个路径嘛。

但其实我要说的问题不是这个,目前发现 Vim 脚本有点问题。首先是速度,感觉打开速度有一点慢,不过其实差不多,也还好。但是关键是它没有去除边框与最大化,这个是与脚本内容矛盾的。

此外还有,在文件资源管理器打开一个文件后关闭或者切换回去,此时再按一遍是没有反应的。目前来看似乎制约的是时间?大约 10s 后才能进行下一次打开。那我好像知道原因是什么了,估计是那个等待时间设置为了 10s。但是奇怪的是为何之前没有遇到这个问题呢?

应该不是管理员权限的原因,我试过管理员执行了。

目前 AutoHotkey 脚本有这两个问题,也是非常影响使用的。第一个其实来个 Win + Up 或自己最大化可以临时解决(除了有边框),稍微麻烦了一点;第二个调低点阈值也能解决。但是没有触及根本——之前为什么没问题,现在为什么出问题?

第四天

环境变量

Anki 数据目录需设置用户环境变量 ANKI_BASE

Vim 需要额外设置 VIM_KEYCODE_TRANS_STRATEGY 为 experimental,这个他处提到过

Anki

可以正常运行,暂时没发现问题。

BCUninstaller

这个印象中似乎没什么设置,不过还是把备份的放到了 persist 里,用了一下大概没什么问题。不过还有一个免 UAC 的后面集中弄一下。

Calibre

这个迁移书库到 persist 的 Calibre Library(虽然其实没有书库),%APPDATA% 的数据到 Calibre Settings 就完成了数据与配置的迁移。

但其实还不够!我主要的配置其实是 ebook-viewer,即阅读器的配置。然后我使用 PowerToys Run 运行 Calibre,没什么问题,正常。

然后运行完 Calibre 后,打开方式就出现了几件套了,比如 ebook-viewer, ebook-edit 什么的了。但是用这些打开方式打开后并没有遵循设置!

然后我去查了一下 viewer 的设置是在 viewer-webengine.json,Everything 搜捕了一下抓获了罪魁祸首。好家伙,果然还是在 %APPDATA% 创了个新的。

然后我又测试了一下,居然在 Calibre 里面用 viewer 打开就是对的。

然后我去目录检查了一下,发现居然还是不一样的应用程序。Calibre 里面还有一个 Calibre 目录,里面放了 calibre 主程序, viewer, edit 等。但是根目录却还有 calibre-portable, ebook-viewer-portable, ebook-edit-portable。

用 portable 就是正常的,用里面的就是错误的。诡异的是注册的应用程序中,只有 calibre 是 portable 的,其他 viewer, edit 什么的全都是非 portable 的。

解决方法就只能是手动添加打开方式了,然后后面可能会去注册表删一下多余的。

Clash

还有一个服务模式与 TUN 模式还没弄,不过暂时用系统代理还行,就最后再弄吧。

Docker

之前是 Docker Desktop,现在只有命令行,让我看看行不行哈。

嗯,感觉没啥留 Windows Docker 的必要,因为目前我只用 DEC 而已。于是卸掉了,按照 Install Docker Engine on Ubuntu 装了 Linux Docker。

但其实中间会遇到错误,安装的过程中出现了错误,大致就是对 /usr/share/zsh/vendor-completions/_docker Operation not permitted,即使是 root 也无济于事。

一开始我还以为是 Zsh 的原因,chsh 改了 Shell,然后从外部用 wsl -u root 再进入,ps 后也没有 zsh,但依旧不行。

后面才想起来可能是属性的原因,用 lsattr 看果然有 i 属性,于是 chattr -i 解决,删掉了就好了。

然后 DEC 似乎更新了一点,现在命令相较之前稍稍改动了一下:

1
2
3
$ sudo docker run -d --name DEC --device /dev/net/tun --cap-add NET_ADMIN -ti \
-p 127.0.0.1:32890:1080 -v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/.ecdata:/root -e EC_VER=7.6.7 -e DISPLAY hagb/docker-easyconnect:vncless-7.6.7

然后还有一件事情就是要是刚登录就退下来,说 expire,可以删掉 ~/.ecdata 试试。

另外 Windows 的 Docker 设置还没搬过去,后面看看哪些是要搬的。

看了看似乎只配了镜像,之前用的是自己申的阿里的,后面改成了 NJU 的,不过 /etc/docker/daemon.json 还是阿里的。既然有就懒得改了。

另外还有一个之前出过事的,后面自己弄了个 DNS 的。然而具体我也不记得是什么事情了,就这样吧。

Everything

还差一个拼音插件,必须要用 pre-release。而且不能放在 persist,包括插件配置。

这个有待自己写 manifest 解决,将 persist 中的内容都能链过去。await

GeoGebra

这个也是抽象之极。

之前用的是安装版,设置在 %APPDATA%/GeoGebra 5.0,现在是便携版,设置在 geogebra.properties

转设置就罢了吧,这玩意居然还不在 persist 里?就在安装目录里。真不怕给覆盖了啊。等着自己写一手 manifest,暂时先 hold。await

还有就是转设置。设置之前在 prefs.xml,而现在却在上面那个文件的 xml_user_preferences 属性,需要将换行去掉或者改成 \n。这个还算简单,虽然也有点麻烦,但是我除了普通的配置还有自己的 GGT 工具……这个可能要研究一番,但其实我也懒得弄了,因为那个工具其实有点烂。但是不管怎么样其实还是好使的,在我现在不怎么绘图的情况下,那个自动生成坐标轴还是仍能派上用场的。

gh

1
2
3
> gh auth login
> Enable-Proxy # 自定义的命令
> gh extension install github/gh-copilot

GoldenDict

这个也期望自己写 manifest。

恢复后重新开始索引。另外有一些路径可能要更改,例如 ffplay.exe 等,之前是写死的,现在既然由 Scoop 管理,也纳入了环境变量,就可以不用绝对路径了。

Honeyview

这个为了咳咳其实已经提前恢复了两个热键。现在开始对照注册表看看。

难绷,我用 Win + G 打开注册表想要观摩一下会不会注册表还是有的,毕竟我看 manifest 还依旧是 setup,结果除了打开注册表外还打开了 Game Bar……看来是因为没开管理员权限?当然,检查的结果是没有,这挺好。

哎呦呦,真舒服,跟注册表感觉就是一个磨子刻出来的。等我粗略检查一下,没什么大问题就迁了。

嗯还是有点问题的,字符串基本可以无伤迁,只需要去掉引号。但是还有 dword,这个得转换。

直接让 DeepSeek 写一个脚本了。也没用 argparse 啥的,不过本来也比较简单就无所谓了。

DeepSeek 脚本
reg2ini.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import re
import os
import sys
import configparser

def convert_dword(value):
"""将dword类型转换为十进制数字"""
if value.lower().startswith('dword:'):
hex_str = value[6:].strip().lstrip('0') or '0' # 处理全零情况
try:
return str(int(hex_str, 16))
except ValueError:
return value
return value

def reg_to_ini(reg_path, ini_path):
config = configparser.RawConfigParser()
config.optionxform = str # 保持键名大小写

current_section = None
section_pattern = re.compile(r'^\[(.*)\]$')
kv_pattern = re.compile(r'^("(?:\\"|\\\\|[^"])*"|@)\s*=\s*(.*)$')

with open(reg_path, 'r', encoding='utf-16') as f:
for line in f:
line = line.strip()
if not line or line.startswith(';'):
continue

# 处理节
if section_match := section_pattern.match(line):
current_section = section_match.group(1)
config.add_section(current_section)
continue

# 处理键值对
if kv_match := kv_pattern.match(line):
name_part, value_part = kv_match.groups()

# 解析键名
name = name_part[1:-1].replace('\\"', '"').replace('\\\\', '\\') if name_part != '@' else '@'

# 解析值
if value_part.startswith('"') and value_part.endswith('"'):
value = value_part[1:-1].replace('\\"', '"').replace('\\\\', '\\')
else:
value = value_part

# DWORD转换
value = convert_dword(value)

if current_section:
config.set(current_section, name, value)

with open(ini_path, 'w') as f:
config.write(f)

if __name__ == '__main__':
if len(sys.argv) not in [2, 3]:
print("用法: reg2ini.py 输入.reg [输出.ini]")
sys.exit(1)

input_reg = sys.argv[1]

# 自动生成输出路径
if len(sys.argv) == 2:
base_name = os.path.splitext(input_reg)[0]
output_ini = f"{base_name}.ini"
else:
output_ini = sys.argv[2]

if not os.path.exists(input_reg):
print(f"错误:输入文件 {input_reg} 不存在")
sys.exit(1)

try:
reg_to_ini(input_reg, output_ini)
print(f"转换完成:{output_ini}")
except Exception as e:
print(f"转换失败:{str(e)}")
sys.exit(1)

Honeyview 前三个不用保留,剩下的我直接复制过去了,应该没大问题。

然后打开 PotPlayer 的看了看,路径有点多,等到那会再去细细研究吧。

MSYS2

上面说了装了 Clang64 的 Clang 工具链与 UCRT64 的 GCC 工具链,还要把这俩加入环境变量,下面的要用。

Neovim

直接复制 WSL 上 ~/.config/nvim%LOCALAPPDATA%/nvim,然后 nvim 装下插件就行了。不过其实 Windows 可能用不了这么多?

Neovim 好像是 Tree-sitter 相关的插件需要上面的工具链进行编译。

qBittorrent

%LOCALAPPDATA%/qBittorrent 的似乎只有种子之类的信息?下载上传信息、Web UI 等设置都没了。

写上面这一句话时才想到去看看 trackers,果然也没了……

然后看了看,原来 qB 在 %APPDATA% 也有……我绷不住了,数据、配置可以放安装目录、%APPDATA%%LOCALAPPDATA%、家目录、注册表[1]ProgramData 等等等等。哈哈,你们有这么好用的 Windows 吗?

QQNT

不再使用 Scoop 管理,手动下了一个。因为数据文件路径改不了,只能在 Documents 里。

本来我都无所谓了,在 Documents 就在 Documents 吧,虽然和微信分居了,但是也懒得管了,我觉得统一用 Scoop 管理的心力成本是更低的,何况在 Documents 还有 OneDrive 可以备份。结果就是 OneDrive 出了问题,Emoji 目录各种错误,我无语……

Sandboxie-Plus

看来是我记错了,这个没有 portable?不过既然没有 persist,也只好暂时 hold 了。await

注意找到自动生成的 Sandboxie.iniSandboxie-Plus.ini 删掉,然后把备份的配置扔到安装目录里就成了。

然后可能会有之前遇到的要删掉用户的权限问题?这个不折腾了,等后面遇到再说吧。而且按照 Scoop 这种形式,会不会更新一次就得重搞一次也不好说。

PotPlayer

顺序有点乱了,本来按字母顺序应该先搞 PotPlayer,但是我 scoop list 和备份列表来回看,结果错过了。然后上面 qB 还稍微提了一下 PotPlayer,我也不好插进去,担心显得精神错乱(虽然确实是这样的),所以就稍微 break 一下吧。

这个似乎比 Honeyview 难搞不少?persist 里面有不少东西,此外注册表也不像 Honeyview 一样还算比较规整。

不过 PotPlayer 虽然写 ini 了,但还是有写注册表,虽然不多。随便改了点设置把 ini 内容逼出来。不过 PotPlayer 有两个可执行文件,我注册表基本只有 Mini 的,估计之前用的也是 Mini 的。网上查了一下也没找到两个的区别。既然这样那我还是依旧用 Mini,这样转配置也比较方便。

谢邀,已经心力憔悴了。

翻了一下,可能整了一个多小时,现在差不多应该弄好了。

首先就是看这个逼配置是什么鸟样啊。我翻注册表,这 PositionsSettings 倒是像模像样呐,ini 里也有,那我就不客气了,转成 ini 然后弄过去,重启。

结果???,毫无反应,然后看 ini,你怎么又回去了?简单看了看别的似乎也没有对上,例如快捷键。

然后还折腾过直接写入注册表什么的,发现并没有什么卵用。

然后我打算看看它到底咋回事,就拿快捷键开刀了。

有点搞笑的是我还煞有介事地拿出了 Process Monitor,结果看到它确实写了 ini。

然后我这才想到保存一份 ini 来前后对照,然后发现了快捷键映射是 MainShortCutList。哈哈,shortcut list,真好。

行吧行吧,那我就把备份的 MainShortCutList 弄过去总可以了吧?

结果一打开,欸你猜怎么着,它 ini 自动回去啦。直接把我气乐了,合着你只写不读是吧。

后面我稍微改了一下注册表,可能还关掉了写 ini?反正我也混乱了,然后写入注册表,终于可以了。

然而这还没完。我用了 nonportable 的 LAV Filters,结果自动搜索的滤镜没有它。行吧行吧,没有就没有,我自己加总行了吧?

然后就是边照着教程改了,还加了个 xy-SubFilter(xysubfilter-libass-np),然后滤镜列表里也还是没有。

然后我突然看到个「用管理员权限执行」,嗯,嗯?于是我手动去执行了两个滤镜里的安装脚本,当然是以管理员权限执行,然后就可以了……哈哈。

哦对了,xy-SubFilter 还有档事,直接 scoop install nonportable/xysubfilter-libass-np 会报错的,我看了一看,原来他娘的 tag 是 0526,但 release 文件是 0624,这不就像我一样发 patch 不创新 release 吗?不过我好歹文件名也没动。

还能咋整?自己改 manifest 呗。改了后还是不行,因为它还挺注重安全,检查起了 hash,还得把 hash 一起改了,改成 a2cf41fe1b3690b0ad5ca088470de1dc1816147bad70a0ba2e84b2a68005a496

当然这理论上算个 bug,可以提个 PR 什么的。但我也懒得管了,因为就在装完后不久,看了看存的第二篇教程,才发现原来已经过时了。我说怎么反复导入注册表还是没能复原呢,原来根本就没配过呀。于是再卸了。

所以最后还是用注册表管理?太幽默了,真的是太幽默啦。

病情不见减轻,现在头晕更甚。

Wolfram

之前就用的是正版了,正好前阵子还看到新版本,14.2 走起。

感觉 Wolfram 算是性容比最低的必备软件了,现在用的不多,但总会想着去装一个,也没怎么犹豫过。而且不仅在 Windows 装了,WSL 也装了个 Wolfram Engine 就为了那速度慢得不行的 extcal

还有一个也是这样的估计就是 TeX Live 了。不过现在 Windows 似乎能暂缓?好像也不太行,Wolfram 有 MaTeX 需要 TeX。

无文档本体快,中文文档还在下,先去洗个澡。

装完了,时间真长,唯一设置了一个整体放大倍数 150%,这也是上次唯一设置的。然后测试了一下中文文档,正常。

然后我看一下哈,本体占据近 7G;中文文档占据,好家伙,这么大,10G。

文档藏得还挺深,而且也到处拉屎:Documents 拉,%APPDATA% 拉,%LOCALAPPDATA% 拉,Program Files 拉,ProgramData 拉……拉了这么多地的我是第一次见。而且关键是文档还不在其中,我找了上面这几个大小都不大。后面定睛一看,居然在 %LOCALAPPDATA%/Programs/Common/Wolfram Research

我算是想起来了,我也记得之前就有这只有一个占着的 Common。

怎么说,你还挺喜欢匀称的,D 盘占个 7G,C 盘占个 10G,雨露均沾是吧,搁着玩跷跷板呢。

不过也舒了一口气,就把你当动态调节的阀门吧,空间不够了先拿你开刀。

VS Code

本来这个没啥要讲的,直接迁移数据就行了,奈何默认 manifest 不太行。

默认 manifest 把 bin 加入环境变量,而我之前都是把根目录加入环境变量。它这个加 bin 不知道怎么想的,这样我用 code 就总会跳出来 cmd 的黑框,我无语。

等自修吧。await

哦还有,改了 nvim.exe 路径,结果不知为何目前有个 vim.lsp 的报错,此外映射都没有,不知道是 keymaps.lua 的问题还是 VS Code 之类的问题,明天再看吧。

软件部分除了 Edge,大概基本完成,告一段落了。到这里差不多恢复了 75% 吧,接下来就是各种琐碎的事情了。

大概想一下有什么:

  • Edge
  • 文件夹图标
  • 侧栏 pin 的文件夹
  • Windows 设置
  • 开始菜单
  • 启动项
  • AHK 脚本的检查
  • 卸载应用

这是恢复的基础。还有一些拓展什么的就不会再此记录了,如抛弃 Git Bash 什么的。

还有三分钟就二月了,一月的私博就空缺了,也没兴趣去水一天了,就这样吧。然后 C++ 项目回顾也只能留给二月了。

任务计划程序

这个也是当天做的,但是忘记写了。

备份的时候搜了一下如何备份任务,因为看了一下任务计划程序中似乎只能一个一个导出,这也太麻烦了点,想看看有没有比较方便的办法。

然后查了一下,有看到用脚本的,但其实我懒得用脚本。然后瞥到一眼知道了路径 %Windir%\System32\Tasks,于是就只备份了这个文件夹里的东西。现在看来真的是,哎。

只能说幸运吧,还好它没整加密什么的,不然就完了。直接拖到对应目录,并没有在任务计划程序中显示出来。

对于文件夹,新建文件夹会提示重名,然后刷新后就显示了,但是里面的任务还是没显示(所以说这与直接新建有什么区别吗?)。然后再一个一个把任务导进去,还好不多。

此外还有用户需要修改一下,用户的编号不一样了。

第七天

哈哈,按着规律下次写会不会是第十一天呢?

这几天一直浑浑噩噩的,即使有写也是快晚饭了才开始写。

Clash

装了服务模式,然后开了 TUN。不过遇到一些问题啊,不知道是不是因为一直没重启的原因。

开的时候需要管理员权限,我就想试试 sudo,虽然说我 WT 也是设置中以管理员权限启动的。然后 sudo 需要去「系统 > 开发者选项」中开启,选了个内联。顺带开了几个「开发人员模式」「结束任务」「文件资源管理器」前三个什么的。

Outlook

有点幽默,上次知道备份 Outlook,这次不知道。邮箱得重新手动一个一个加回去了。

Outlook Gmail 倒还好,QQ 和南大要 IMAP,得累死了。

Office

继续摆啊摆,然后今天可能要做小组作业,打开 docx 文件才发现 Office 还没装,难怪感觉空间还有不少呢。

简单装了一下,按照上次的过程,没啥可补充的。

凭据

装完 Office 还遇到一个可能是网络的问题?然而原因不明,莫名其妙折腾一下又好了,就不记录了。

然后期间打开过凭据管理,才发现凭据其实也是可以导出进行备份的,下次可以注意一下。

设置

怎么说呢,原来设置也是可以备份同步的,只是我没开 OneDrive,不知道还行不行。

这个 OneDrive 不是学校的,而是指我自己个人账户的,因为只有 5G,感觉这点没多少用,加上反而增加了混乱程度,因此就没加上这个。

不过按理来说这个似乎不是 OneDrive 保管的,更像是 Microsoft 账户保管的?我这里虽然没登录个人 OneDrive,但是首选项显示的却是「已备份」。

然而网上搜到的信息说的是,在新电脑上登录会自动同步,但看样子并不是这样的。我再找找资料,看看有没有什么办法。实在不行,不管怎么说设置应该都在注册表,我备份了整个注册表,到时候看看也行。

有点意思,在 Microsoft 账户找的时候,发现有 BitLocker 恢复密钥。这没啥奇怪的,但是我看日期是 2025 年 1 月。然后再去看 BitLocker,果然启用了。这应该就是之前听说过的默认启用 BitLocker,即使重装前已经关掉了?不过既然开了就让它这样吧。

算了,找不到了,重新设置吧,就当记录一下我都设置了些什么吧。不过其实到现在已经设置了一点了。由于标题层级太深了,就并列了。

设置 > 系统

屏幕

采用「扩展这些显示器」模式。

夜间模式我一直都是开着的,强度设置 50%,时间设置从 3:00 到 2:00,即几乎必然夜间。

缩放 175%,其实不是最推荐的。最推荐的是 150%,感觉有点像大屏显示器。

不过现在换了换,感觉可以一试,毕竟信息量多出了不少。希望眼睛不要靠太近以看清东西吧……

这样设置完后,副屏也得从 150% 设置到 125% 差不多。

电源和电池

电源模式在接通电源时开「最佳性能」,使用电池时还是「平衡」。

存储

把存储感知开一周一次。之前是不够了才动,这次试试定期。

开发者选项

上面说过了,我复制过来:

开的时候需要管理员权限,我就想试试 sudo,虽然说我 WT 也是设置中以管理员权限启动的。然后 sudo 需要去「系统 > 开发者选项」中开启,选了个内联。顺带开了几个「开发人员模式」「结束任务」「文件资源管理器」前三个什么的。

其实还有个 PowerShell 也开了,不过不记得默认是不是开着的了。

大概就没了,系统组件什么的后面集中枪毙。

打开了个 Dev Home,然后它更新,更新完后一个红色横幅说停用了。呃,这个历史也不长吧。

然后还是开了 Hyper-V,虽然说 WSL 其实用不着开。

设置 > 蓝牙和其他设备

这个就是把一些设备连一连,其他基本没动

设置 > 网络和 Internet

基本没动。

设置 > 个性化

背景

「Windows 聚焦」换成「图片」。不过其实聚焦好像还挺好的?嗯那要不还是就聚焦了,反正都是 Windows 默认的,也看腻了。

聚焦会出现一个按钮,做掉的方法是注册表 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel 加一个名为 {2CC5CA98-6485-489A-920E-B3E88A6CCCE3} DWORD 项,值为 1,然后刷新。要恢复就删掉这个项。

主题

这个光标之前已经设置了。

同时桌面图标隐藏回收站,这样桌面就是干干净净,纯粹的壁纸了。

文本输入

黑色主题,候选窗口高度为「小」,文本大小为「大」,候选字数为 8,候选项字体大小为「大」

开始

布局为「更多固定项」,不要最近添加的应用以及各种所谓的「推荐」「建议」。

电源旁边的文件加个「网络」与「个人文件夹」。

任务栏

不要搜索、任务视图与小组件。小组件现在还能在设置这边苟活,我等下会补枪。

托盘图标这些只能自己慢慢调了。

任务栏行为,多个显示器只在打开了窗口的那边显示,不过这个偶尔会有 bug。

字体

目前为止应该就多装了三款字体:JetBrains Mono Nerd Font, JetBrainsMono Nerd Font Mono 以及 Microsoft YaHei Mono。

前两个都是 JetBrainsMono,装 Vim 那会安装了字体,结果发现 gVim 与 WT(以及 VS Code)用的居然不是一种 JetBrainsMono。

我很奇怪为什么第二个,也就是 Vim 用的版本,JetBrainsMono 后面还有个 Mono,不是已经是等宽的了吗?

还好半年多以前存过一篇有关字体的文章,解惑了,第二个 Mono 指的是就连 Nerd Font 也是等宽的。

我想只保留一个,就打算把 Vim 的改掉,也换成前一个,然后才发现 Vim 不能选第一个。Vim 之前搞字体的时候就注意到了它字体是硬性规定要 Mono 的,即使是 wide 的也是。因此 Microsoft YaHei Mono 也是我捣鼓到的一个中文等宽字体,因为感觉雅黑也挺赏心悦目的。

中文字体这一个就 14M 了,英文一个才 2M。然后第一个有 11 种,第二个有 16 种。所以说两个都得保留了。

那为什么不删掉第一个,然后把 WT 和 VS Code 改成第二个呢?因为上面那个文章也有图,图标等宽挺小的,不太好看。所以还是两个都保留吧。

设置 > 应用

高级应用设置 > 应用执行别名那里,把 pythonpython3 的关掉,真不知道你为啥这么喜欢强占 py。然后就是 WT 换掉,大概就没了。

默认应用这个有点多,后面遇到再改,或统一弄一下吧,毕竟还会涉及注册表删掉一些丑陋的打开方式备选项什么的。await

而启动这个,暂时也不管,这个一起弄。await

设置 > 账户

大概没什么,应该就加了人脸什么的吧。

设置 > 时间和语言

「语言和区域」,简体中文装个「增强的语音识别」,虽然我好像没怎么用过语音识别。

然后是微软拼音输入法的设置。双拼这个早加了,不加就折磨死我了。

中英文模式切换只保留 Shift,不要全半角切换和标点切换。翻页要 -/=[],主要用的是前者,只不过后者感觉也不错。简繁切换用 Ctrl + Shift + Z,因为原本的好像是 Ctrl + Shift + F?好像有给占用。

自学习词汇以后要记得导出。

然后专业词典,开了「计算机科学」「数学」,就不多开了,免得性能降低。而且说实在的,之前开了好多确实用不上。

双拼挺不爽的就是 UV 模式了,没有全拼好用。

「区域格式」那边,给长时间格式换成了有前缀零。之前短日期似乎也有动过?不过发现默认的短一点,占空间少一点,那就还是保持默认吧。

语音换为了瑶瑶,感觉比慧慧好听一点,不过也就一点。这个之前未必动过。

设置 > 游戏

游戏这边其实不用管,因为我马上就会卸掉 Xbox 相关的东西了。

不过还是先关掉 Game Bar。还有什么游戏模式,也一并关掉。

设置 > 辅助功能

看到这鼠标,搜了一下能否把光标翻转,只找到了改光标样式的方法,看来是没办法了。

然后开启实时字幕,会下载东西,这个阶段开代理下载不了,不知道是不是 UWP 的事情。

然后随便配了下样式,感觉不是很知道每个的含义。「透明度」感觉说的是「不透明度」,然后字体就是 100% 和大,黑色,除了颜色基本没动;背景白色 75% 透明度;窗口白色 0% 透明度。虽然说感觉主题预览跟实际用对不上。

键盘关掉了粘滞键筛选键什么的,同时不让 Print Screen 捕获屏幕,这个用 Win + Shift + S 就行了。虽然我对 Snipaste 不太满意,但还是把 Print Screen 分给这位「老臣」。

看设置的过程中还发现居然还有小键盘移动鼠标,有点意思,但对我没什么用。

设置 > 隐私与安全性

BitLocker 恢复密钥虽然 Microsoft 账户上有,但还是本地、云端备份了一下,毕竟这个是真容不得出事。

「常规」那里全部关掉。

「诊断和反馈」从不反馈。

「活动历史记录」不存储。

「搜索权限」选项全部关闭。

「搜索 Windows」,这个照前篇已经禁用了索引服务。

下面的太多,太复杂了,用到再说吧。

设置 > Windows 更新

应该就改一个使用时段,设置为 8:00 到 2:00。

之前还会最新更新可用后立刻获取,现在累了不想整了。新特性没体验到多少,新 bug 倒是有。

设置部分大概到此就告一段落了,并没有多少。

eza

上面写到字体时,打算在 Windows 显示一下,发现没装 eza,于是装了一下。

但是运行后还是没显示图标,去检查了一下发现 WSL 上设置了 EZA_ICONS_AUTO 环境变量。然后我就很奇怪,~/.config 没看到欸,于是去 GitHub 上搜,找到了一个 issue,看来是还没实现。然后打算订阅的时候,发现我已经订阅过了……

这个等 Windows 上 Bash 转 PowerShell 的时候再一起弄吧。await

卸载

开杀!

刽子手是 BCUninstaller。选了下面的内容,不到 3G。

边卸载边裁剪上面的图片,然后突然画图给关了,然后才猛地意识到把 Paint 勾了。

本来想灰溜溜地去 Store 下回来,但转念一想,何不直接装个编辑软件?反正我本来就对这个「画图」有诸多不满了,只能用来裁剪图片。

然后最后找到了 PhotoDemon,而且还能用 Scoop 管理。画图?真不熟。

然后把卸载失败的 Dolby 补了一枪,Decreased Wallpaper 那个可能是因为在用而删不了?

暂时先杀这么多吧。补杀的倒也不会更新了。

然后这是目前的按大小排序的软件安装情况,不知道使用一阵子,到下次重装后,会变成什么样呢?

右键

使用旧版右键,可把我憋坏了,PowerShell 运行:

1
2
> reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
> taskkill /f /im explorer.exe && start explorer.exe

要恢复:

> reg delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f

图标与侧栏

除了「文档」全部删掉,此外删掉「图片」时还把 Feedback 一起删了。

明天再弄吧。写完上面这句话后,就没继续弄了。

第八天

图标与侧栏

第一张图是之前的,我没有备份,所以是从 C++ 项目最后的视频中翻到的。至于为什么这么糊,加沙画质,那就得等我抽出时间写 C++ 项目总结。

稍微有点调整,这次还加了个 Scoop,同时把 Temp 目录也挂上去了,相当于 D 盘几乎所有一级目录都在上面了。

另外 SeaDrive 目录也加了图标。不过可惜的是,OneDrive 没备份 desktop.ini,所以里面设置的图标就没了,我也懒得管了,Let it go。

然后终端去改 OneDrive 的 desktop.ini,在 [.ShellClassInfo] 下加一行 LocalizedResourceName=OneDrive NJU,这样显示名称就变成 OneDrive NJU 了,比原来稍微好看一点。

此外 OneDrive 还会创建一个 OneDriveTemp 的隐藏目录,但是因为我开着显示隐藏文件,所以很扎眼。很早之前是通过把它图标也换了来美化的,不过后面还是隐藏了它。

怎么隐藏的呢?虽然我开了显示隐藏文件,但我没开显示系统文件,否则的话,即使是 D 盘一打开也有个 $RECYCLE.BIN, System Volume Information,这谁受得了。显示属性也能看出来这俩个是有加系统属性的:

1
2
3
4
5
6
7
8
9
10
11
12
13
D:\> attrib /D
SH D:\$RECYCLE.BIN
R D:\Assets
R D:\Blog
R D:\Data
R D:\Download
A R D:\OneDrive - 南京大学
H D:\OneDriveTemp
R P D:\Project
R D:\Software
R P D:\Study
SH D:\System Volume Information
R D:\Temp

所以解决方法就是

D:\> attrib +S +H .\OneDriveTemp /D

另外 +H 也是必要的,即使已经有了 H 属性。

然后我还看到 R, A, P 三个属性。查了点资料,R 就是 Read-only,但是文件夹上的通常被忽略,「用于另一个目的」[2];A 就是 Archive,表示该文档未被备份[3];P 就是 Pinned,不知道为啥会有两个文件夹有,这个看样子是用来保护文件夹不被清除的[4]

开始菜单

「启动」好像记错了?

哦,没有,绷不住了。我在副屏搜索博文,正好 Start Menu 在中间给截断了,我就只复制了 %APPDATA%/Microsoft/Windows/Start,然后自然是不存在。

改了 Snipaste 的路径和图标,WSL 脚本的名称就完事了(Ubuntu 这个早该改了,我也记得改过,不知为何还是旧的)。

剩下的在用的途中发掘吧。

然后就是开始菜单了。开始菜单我感觉是真的乱,不理解它的文件布局逻辑。然后我建立的文件夹也找不到踪迹。

查了一下,Start Menu 应该不是正确的路径。网上找到一个方法使用 Export-StartLayout 命令,但我实际看了一下发现不太行,导出的 JSON 信息并不充足。

然后再找了一下,发现可以用 %LOCALAPPDATA%/Packages/Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy/LocalState 里的 bin 文件(可能有两个,start.binstart2.bin,我这里目前只有第二个)替换。我没试过不知道可不可行,因为这个根本就没备份。

所以说还是要提前做好准备。另外 AppData 还是要像 Windows.old 一样整体备份一下比较合适。我可以不要,你不能没有。

所以就是手动恢复吧,我看看备份的 Start Menu 能不能提供点灵感。

有点意思,本来有一些免 UAC 的应用 pin 了,但是免 UAC 的应用不在我的自定义目录(这是程序所决定的,我之前有过改程序的想法),从而根本没备份。这下想摆烂了。

免 UAC 的就懒得弄了,等后面我去找一下那个程序,看看能不能自己修改一下吧。await

沙盒装的一些流氓软件倒还是要恢复一下。

恢复完了,有点奇怪。需要把快捷方式丢 %APPDATA%/Microsoft/Windows/Start Menu/Programs,然后再右键加入到开始菜单才行,直接加入不行。

试了个百度网盘,可以正常登录与使用。

需要 UAC 的,可能不太方便搜索的应用加了两个。UAC 就 UAC 吧,现在懒得去整任务什么的了。

所以现在勉强算恢复了。

写到这才想起来,之前忘了写个东西。

前面不是还说没有电脑管家吗,用 Everything 没找到。然后我一按 Win,居然在开始菜单中出现了!

我百思不得其解,Everything 检查了几个关键词都没找到。于是我盯着开始菜单上的图标,想打开来看看,然后用 Spy 定位可执行文件,来定点清除。之所以要打开,是因为我右键并没有打开文件所在位置之类的东西。

结果啊结果啊,微软你这么坏啊,这完完全全就是个陷阱啊,一点直接开始给我安装了,进度条都出来了。吓得我感觉删掉了。

现在去 Store 看是「已拥有」,但是可以点击「安装」的状态。所以说暂时是还没在我的电脑上定居?可喜可贺,可喜可贺呐。

Edge

然后终于是罪魁祸首 Edge 的恢复了。在写到这之前已经恢复了一点点。

首先要开开发者和外部扩展。

按照插件的名称顺序开始(分两侧,一个是 Edge 扩展应用商店有的,另一个是外部的,因此实际上并不完全按字母顺序),一个一个边恢复边讲。即使不需要动设置的,但还会提一嘴。

Global Speed: 视频速度控制

这个是我马上就改了的,毕竟现在看个听人讲话的视频,不开倍速的语速是真听不下去。

只保留了三个,剩下的全禁用了。- 是 -0.1,= 是 +0.1,Shift + = 是重置为 1(其实不是重置,是倍速和 1 来回跳)。

按理来说应该是 +,也就是 Shift + = 为 +0.1,然后 = 为设置为 1 的,这样才更形象,而且很多似乎都是这样的?但是为了按键的对称,以及便利性,我是这样设置的。

I don't care about cookies

注重隐私,是好事。烦也是真烦。

IDM Integration Module

没啥好说的。

Infinity 新标签页 (Pro)

这个有账号,所以设置都在。

PotatoPlus

这个没开,NJU 一些系统的改进。不过实际上我也没用,因为选课的自动加载会频繁退出去,然而自动滚页意义不大。

uBlock Origin

唉,没话好说,重写规则吧。这个不是现在能边写边恢复的,这个是长期以来的积累。

这个似乎能云端?但我现在对 Edge 的云端持怀疑态度。反正到时候定期备份要有它的一席之地。

侧边翻译

有变化,但懒得改了。

捕捉网页截图 - FireShot

没动。

教学立方辅助工具

用来下文件的,具体下啥忘记了,因为我记得我是有教学立方的下载脚本的。

CORS Unblock

忘了这玩意啥时候装的了,记得是某一个插件的前置要求,关了关了。

哦有点印象,可能是某个说重装时不想再装了的那个的。

Firenvim

没有啥设置,开就完事了。

哦对了其实是有的,我设置了默认禁用,激活的快捷键为了 Ctrl + E

说实话这个插件很早以前,恐怕是高二,就已经见过了,那时候即使是 Vim 也是早期。可以说这个概念是有点震撼到我的,Neovim everywhere。甚至可以说我的 Vark 都有一部分想法是源自这惊鸿一瞥。当然实际用处可能不多就是了,但炫就完了。

Proxy SwitchyOmega

这个是我最惊讶的,其他的云备份像是不存在一样,这个我都不记得我弄过云备份了,结果还在。不得不说的是,要是这个不在,那也还得折腾一会。

Redirector

这个之前用来知乎重定向的,现在懒得写了,禁了禁了。

Refined GitHub

看到这里我又愣住了,本来都打算重新搞个 Token 了,这个也有云备份?我现在有点混乱。

Save All Resources

保存资源用的,印象中就用过一次,好像是去年年初,还没开始,快开始时捣鼓的。

Webmail Ad Blocker

无。

沉浸式翻译

这个现在就在了,尽管其实我想要更早的。

篡改猴

本来想,要是中间遇到了,那也留到最后一个讲,没想到就是最后一个。

我连有啥脚本都记不清了。

目前已经装了两个,以解燃眉之急。

第一个是「自动无缝翻页」,这个具体的调参,也得实际使用中再自己改了。

第二个是 Bilibili Evolved。当时应该是为了方便下一个弹幕,虽然有脚本,但是麻烦,用现成的多好。

虽然现在装了,也装了几个工具箱,但还不够。本来想现在边装边记录,但感觉没啥必要了,配完就完事了。

另外这应该是结合了一点 Origin 的。

嗯,正好 Dr 终于有了,我也就拿 Dr 来调。真奇怪,RF 的 Ri 也是刚刚出的,这俩是一起的?不过细想又不对,Ri 需要一点时间处理的,呃,Dr 似乎也要?

然后就是针对每天都会打开,而且时间不短的网页进行了 Origin 优化。

嗯,那暂时应该就完了。至于本地的脚本,例如什么复制 LaTeX\LaTeX 代码之类的,就算了,懒得整了。

Outlook

开始哼哧哼哧恢复邮箱们,比较困难的应该就是 QQ 邮箱和学校邮箱,因为要 IMAP。

不得不感叹 Outlook 与 Gmail 真无缝啊。

其实也没多麻烦,也用不了多久,大概不到三分钟一个,是有点熟练了。

讲点细节吧。学校邮箱 Outlook 自动生成的服务器不对,需要改一下。QQ 就没啥,自动生成的服务器直接就是对的,也免去我再去找的工夫。不过 QQ 的要发短信授权。

然后现在就比较尴尬了,手机电脑各一个授权码。嘛倒也不是不行,颗粒化管理。不过 QQ 很诡异,除了新建的外,还有个邮箱和 PC 邮箱,而且今天都用了,可是我也应该就手机一个 Outlook 了吧,那这个 PC 邮箱是谁用的?

Neovim

Neovim 附带 win32yank,这原本可喜可贺,只需要将 Neovim 的 bin 目录加入环境变量,就可以直接使用了。

但是 Scoop 的 manifest 只弄了 nvim.exe,没去管同在 bin 的几个,因此 WSL 剪贴板就用不了了。

作为暂时的解决方法,我 scoop install win32yank。长期的解决方法就是改 manifest 了。await

测试了一下,没问题。

剩下还有 VSCode Neovim,这个折腾了一阵子还没弄完。哎哎,重置后怎么这么多事啊。要是今天能弄完的话也明天补了。

反正不管怎么说,重置工作大体上就今天告一段落了,后面基本也就是零零散散的了。Vim 脚本其实不管也没啥事了。然后明天重启一次看看,已经挂了好几天了,重启后可能还有一些事要检查一下。

嗯搞完事了,虽然说跟重装关系不大,但还是一并说了吧。

问题就出在我瞎弄设置,之前设置是好的,我只在 WSL 改了,没在 VS Code 测试。

首先就是 VS Code 插件报错 + messages 有不明消息,查也查不到。后面把 Lua 配置移出移进,报错就好了。

然后我看日志,启动时的 configFile~/.vimrc,我就震惊了,怎么会这样呢?configDir 就是正确的 %LOCALAPPDATA%/nvim

于是我去设置 vscode-neovim.neovimInitVimPaths.win32%LOCALAPPDATA%/nvim/init.lua,还是不行。

然后好像是移出移进,顺带把这个推进了一步,不再是 ~/.vimrc 了,直接就不显示了。我用 :lua print(vim.env.MYVIMRC)(这个是检查源码发现的是通过这个得到的),发现直接就是 nil 了。然而我在终端开个 Neovim 是能正确显示出 init.lua 的。

后面再看日志,去看了看它的启动命令,复制过来每个选项研究一下,然后发现我开了 --clean,开了一个 vscode-neovim.neovimClean 选项,直接放弃了用户设置,这难怪……

但是弄完后还是不行,我的映射还是不生效,这到底咋回事。

然后我就各种排查啊。后面把 plugins 全部移出,哎,可以了!

然后就开始一个一个排查,结果居然都通过了。我这会就纳闷了,不会这种极其罕见的情况,就是错误是多个插件共同作用的结果,给我碰上了吧。

不过我转念一想,看向了 colorscheme.lua,这个是我给予检查豁免的插件,因为我感觉跟主题没啥关系。

结果问题还真就出在这,原因就是我乱改,不知道为何看了 lazy.nvim 的文档后乱加 cond,结果给 LazyVim 加了个 cond,VS Code 启动时不加载。结果就是映射出问题了。

不过还是有点奇怪,只是映射出了问题,但是 verb map ; 是有结果的,也就是说是正确映射了的,只是没有被正确处理。而且其实还是能用 :Lazy 命令,只是没有 :LazyExtras 了。不过 :Lazy 可能是 lazy.nvim 提供的,那就说通了?

然后我拿 AHK 的文件测试,发现 Shift + U 映射还是不行,以为又出事了,毕竟这个在重装前就弄了一下。Neovim 原生的 undo/redo 不行,我在 VS Code 中重映射为了用 VS Code 的命令进行操作。

不过后面不小心点到别的地方,然后发现就可以了,测试了其他文件也可以,就是 AHK 某一个地方不行。然后试了一下,改了那部分后无法保存,LSP 会报错,不知道会不会是这个的原因。

不管怎么说,VS Code Neovim 应该大体没问题了。

还有就是 Firenvim,这个我一试也不行,直接就是 died without answering 了。

开查,看到一个安装命令。然后我再想到会不会是因为上面类似的问题,于是去看插件配置文件,果然加了 lazycond

注释掉后再进去,这时候才执行了安装操作,然后刷新页面、重载设置后就可以了……

原因就是之前学了点 lazy.nvim 后就不懂乱用 lazycond 了。结果:因为没安装特定脚本,cond 不匹配;cond 不匹配,firenvim 不加载,安装脚本不执行。陷入这样的怪圈。

不过现在装完后就可以开 lazycond 了。

嗯,大概就这么多。

然后补充一点字数相关的事情吧。写到这里已经有 76KB 了,在公博博文中稳居第一,领先第二「EL 项目作品『春紛 Bloomink』记录」 足足 13KB 多。算字数也有 19k 字了,领先第二「2024 年终总结」也有 4k 字了。

不过这里也写了一阵子了,这段时间暂时充当了记事板的角色。

按照大小,这个成绩,即使是放在记事板,也是仅次于 2023 年的 12 月及 2024 年的 10 月、11 月、8 月、1 月的存在,能位居第六,算是很不错了。算字数的话也还是这个位置,只不过距离 2024 年 1 月更近了点,只有时间稍稍短了一分钟。

不管怎样,明天就应该开始写 C++ 的项目总结了,迟到了两周多的总结。


  1. 没错,数据也可以放注册表,这就抽象,Honeyview, PotPlayer 这样的是会把近期浏览的写注册表的。 ↩︎

  2. 这个在二十多年前的 The Old New Thing: Why is the readonly property for folders so strange? 有所记载。当有 R 或 S 属性时,文件资源管理器才会寻找 desktop.ini 以更深层次地自定义文件夹,这是从性能方面的考虑。 ↩︎

  3. 引用维基的说法,当创建或修改文件时,设置了 Archive 位(即打开),当文件备份后,清除了 Archive 位(即关闭)。因此, Archive 位的含义是「该文件尚未被 archive」。 ↩︎

  4. 按照 Windows API 文档 的说法,Pinned 属性表明用户即使不积极访问,也应将文件或目录完全放在本地,此属性用于层次存储管理软件。因此不太明白为何会出现在上面两个文件夹上。还看到一个说法,说指的是 Sparse 稀疏文件,这个说法在维基和 Stack Exchange 都有看到。 ↩︎