Skip to content
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d49583a
doc: 12-text-editing completed the unfinished part
ZangXuanyi Jun 15, 2025
633b8d7
chore: update pnpm to version 10.12.1 and add it as a dependency
ZangXuanyi Jun 15, 2025
df951b8
fix: 更新12-text-editing.md中的数学公式说明
ZangXuanyi Jun 16, 2025
fa44bad
chore: 移除package.json中的pnpm依赖,这是因为本人的疏忽错误地加上的,现在回归正常了
ZangXuanyi Jun 16, 2025
f0549f9
chore: 移除pnpm依赖,回归正常配置
ZangXuanyi Jun 16, 2025
e297102
doc: 删除无用的 image.png 文件,并增加了MSYS2和WSL的内容
ZangXuanyi Jun 25, 2025
23afd4e
Merge branch 'main' into main
ZangXuanyi Jun 25, 2025
ba0928c
chore: Update basic/13-windows-overview.md
ZangXuanyi Jun 25, 2025
7ec516d
Update basic/13-windows-overview.md
ZangXuanyi Jun 25, 2025
abfa3ad
Update basic/13-windows-overview.md
ZangXuanyi Jun 25, 2025
7435225
chore: 修正和优化 Windows 入门指南中的描述,增强可读性和准确性,降低了拟人元素
ZangXuanyi Jun 25, 2025
d284f45
chore: lint
ZangXuanyi Jun 25, 2025
3f917ed
Update basic/13-windows-overview.md
ZangXuanyi Jun 25, 2025
cb94792
doc: 加了一句话
ZangXuanyi Jun 27, 2025
fa681ca
chore: lint
ZangXuanyi Jun 27, 2025
dcb75e0
doc: 增加清理C盘知识介绍
ZangXuanyi Jun 30, 2025
7ca60e6
doc: 更新 Windows 11 强制更新和 MSYS2 环境变量的相关说明
ZangXuanyi Jun 30, 2025
f1acfb3
chore: lint
ZangXuanyi Jun 30, 2025
64c6af4
doc: 更新 Windows 11 强制更新和 C 盘清理相关内容
ZangXuanyi Jun 30, 2025
139c4b6
Delete package-lock.json
leavelet Jul 5, 2025
f43d5e4
Merge branch 'main' into main
ZangXuanyi Jul 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 69 additions & 15 deletions basic/13-windows-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ Windows 大小姐永远极为关心自己的权限问题。

Windows 其实还有不少别的大小姐脾气,足见其不好用,尤其是开发上。那我们这些管理员的目的,当然就是把这位大小姐调教为能正常上岗的社畜;不求能像 Linux 一样完美契合工作,至少也得能用吧……

## 第一步:获取真正的 `Administrator` 权限
## 提权:获取真正的 `Administrator` 权限

::: warning 警告

Expand Down Expand Up @@ -99,7 +99,7 @@ Windows 其实还有不少别的大小姐脾气,足见其不好用,尤其是

`HKLM` 是 Windows 注册表的核心根键之一。对于会调注册表的人而言,该注册表可以调优系统启动项或者其他性能参数。

**对于小白,我建议你永远不要动这个东西。**如果一个教程说要修改`HKLM`项目,如可能,请试着寻找其他替代手段。
**对于小白,我建议你永远不要动这个东西**。如果一个教程说要修改`HKLM`项目,如可能,请试着寻找其他替代手段。

直接修改 `HKLM` 可能导致系统崩溃或软件故障,操作前务必备份注册表并创建系统还原点——无论你能不能事先确认该修改是否正确。

Expand All @@ -123,15 +123,9 @@ net user administrator /active:yes

不过我依然要给你泼盆冷水:虽然这实际上是 Windows 中我们能够访问的最高权限账户,但是他的权限实际上依然比不上 Linux 中的 `root` 。即使强悍如 `Administrator`,也没办法真正地接近大小姐本人:即使开启 `Administrator`,修改 `TrustedInstaller` 保护的文件仍需施展 “夺取所有权” 的仪式;涉及安全启动或 BitLocker 的操作,即使大管家也要被大小姐踹飞。

::: warning 警告

最后提醒一遍:**如非需要,切勿随意使用这个账户**。

:::

~~呜呜我们 Linux 小姐还是太温柔了~~

## 第二步:让大小姐认识路
## 环境变量:让大小姐认识路

Windows 大小姐的庄园错综复杂,连她本人都只能堪堪记住系统自带房间的路。而在庄园里开辟新的房间的时候(指安装新的软件),她几乎从不知道自己应该怎么去到那个房间。如果我们对她做出命令“Windows,移动”,她大概率无动于衷,并一口气给你爆三行红色警告。而这并不是因为她生性懒惰:她只是不知道罢了。那么,当务之急就是让她知道怎么走。

Expand All @@ -157,11 +151,11 @@ $env:Path += ";C:\Program Files\mingw64\bin"

~~呜呜我们 Linux 小姐还是太温柔了~~

## 第三步:给大小姐换套工作服
## 使用 PowerShell 而不是 CMD

对于 Linux 用户而言,Terminal 是不可不用的一个东西,而它也是 Linux 小姐最喜欢的工作服。而 Win 小姐的默认终端是 `cmd`(命令提示符),这玩意极其难用。~~而 B 站竟然还有一堆低质量营销号教人怎么用 bat 脚本,思之令人发笑~~

5202 年了,这 CMD 还在遵从 1981 年的祖训:批量处理依赖批处理脚本这种活字印刷术,调试循环变量堪比在迷宫找出口,操作注册表要忍受 reg add 参数里反人类的斜杠森林……还沉浸在过往之中吗?这种又难看又难穿的旧式晚礼服早该被扔掉了好吧?!
2025 年了,这 CMD 还在遵从 1981 年的祖训:批量处理依赖批处理脚本这种活字印刷术,调试循环变量堪比在迷宫找出口,操作注册表要忍受 reg add 参数里反人类的斜杠森林……还沉浸在过往之中吗?这种又难看又难穿的旧式晚礼服早该被扔掉了好吧?!

好在微软已经看不下去了,亲自下场给 Win 小姐做了一套新的衣服:Windows PowerShell(不少地方简称 PowerShell,甚至直接使用 `pwsh` 或者更简洁的 `PS` 代替了)。但是,当 Win 小姐被随着新电脑打包运送到我们手里的时候,这件衣服却不在包裹里面,搞半天原来要自己去下载。

Expand Down Expand Up @@ -198,7 +192,7 @@ PS 不仅是一个终端,它还是一门完备的语言。因此它能做到

~~呜呜我们 Linux 小姐还是太温柔了~~

## 第四步:大小姐的自动化管理
## winget:大小姐的自动化包管理

最终我们还是厌倦了手动下载安装软件包,其配环境等过程实在是依托答辩。我们想到,Linux 有著名的 `apt`、`pacman`、`yay` 等包管理器,Mac 也有 `Homebrew`。那么能否在 Windows 下使用同样的手段安装和管理包呢?

Expand All @@ -220,9 +214,9 @@ winget install JanDeDobbeleer.OhMyPosh -s winget

不过这个 `winget` 有一个很巨大的问题:因为它是微软钦定的包管理器,所以自然极为依赖微软本身,导致它**只能安装**微软钦定的包!像 `yay` 一样从 GitHub 上面下载包然后给你直接 build 了那更是不可能的!

而更搞笑的事情在于,对于部分包而言,它甚至是直接把安装用的 exe 给你拉下来然后自动运行的。这种事情很抽象,不过既然是 Win 小姐,那也正常。
而更搞笑的事情在于,对于部分包而言,它甚至是直接把安装用的 exe 或者 msi 给你拉下来然后自动运行的。这种事情很抽象,不过既然是 Win 小姐,那也正常。

于是我们发现这个除了在全新 Windows 机器上批量安装开发工具链以外,实在是用处有限。
于是我们发现这个除了批量安装开发工具链以外,实在是用处有限。

```bash
winget install Python Nodejs Git
Expand All @@ -232,7 +226,67 @@ winget install Python Nodejs Git

~~呜呜我们 Linux 小姐还是太温柔了~~

## 第五步
## 更先进的终端

虽然我们确实是利用 PowerShell 解决了 Windows 的种种问题,但是我们也看到在执行许多操作的时候依然很别扭,如同穿着高跟鞋在工厂打螺丝。这并不十分适合我们这群开发者。而这时,一群程序员找到了 Linux 小姐的一套衣服,于是在他们的精巧裁缝之下,一件又新又好的衣服诞生了,它就是 MSYS2。

安装 MSYS2 可以前往其官网 [msys2.org](msys2.org)下载其安装程序。下载下来的同样是可执行文件,一路确定到底就行了(别忘记把这东西加入环境变量)。

然后你会发现多了一些可以用的终端(MSYS2、MINGW64、UCRT64。32 位的不知道什么时候就暴毙了,不建议使用)。这些终端有着不同环境,编译的软件存在不同的依赖行为,例如 MINGW64 环境生成原生 Windows 可执行文件(依赖 msvcrt 或 ucrt)。MSYS2 环境生成的程序依赖 msys-2.0.dll,适合在 MSYS2 终端内运行。我们一般使用的是`MSYS2 UCRT64`这个终端。当你安装完成后,你就会惊奇地发现:

这难道不是和 Arch Linux 一模一样吗?

从形式上看这玩意确实是和 Arch Linux 一样的,自然也支持 Linux 的各种各样的命令,例如在 PowerShell 中使用`ls`、`touch`这类的语句,以及使用`pacman`进行包管理等。

同时,这东西还是一个开发平台,可以轻易地使用`pacman`快速且舒适地安装 GCC 等在 Windows 上难以安装的软件。需要注意的是,我们使用`pacman`安装的软件,其环境变量是在`MSYS2`的终端中;如果你需要在 Windows 的相关终端中使用这些终端,你需要将它们增加到**Windows 系统**的环境变量。部分 MSYS2 软件在 Windows 终端中可能行为异常,多版本 Python 等软件也有可能产生冲突,这都是正常现象。同时,由于这实际上是一个终端,类似于`chmod 777`这种东西也是摆设。

关于 MSYS2 的更进一步使用,我们可以参考大佬 wszqkzqk 的[blog](https://wszqkzqk.github.io/tags/#MSYS2)~~星外之神的恩情还不完~~。

~~呜呜我们 Linux 小姐还是太温柔了……吗?~~

## WSL:脚踏两条船?全对!

Windows 大小姐虽然娇蛮任性,但偶尔也会展现出惊人的包容力——比如她居然允许你在她的闺房里养一个 Linux 小情人!

没错,我说的正是 WSL。这项黑科技让 Linux 程序能在 Windows 里原生运行,堪称操作系统界的 NTR 现场。~~当然这是 Microsoft 授意的(大嘘)~~

想象一下:当 Win 小姐正用 Defender 严防死守时,你突然在她眼皮底下输入:

```bash
wsl --install
```

片刻之后,一个完整的 Ubuntu 终端便从她的系统内核里长了出来!这场景堪比大小姐的衣柜里突然钻出个穿 Tux 企鹅服的少女,而她居然只是挑了挑眉:“哦,你玩吧。”

更离谱的是,这个 Linux 小情人不仅能和大小姐共享文件系统(`/mnt/c` 直通 Windows 的 C 盘),还能用 `apt` 安装软件、用 `gcc` 编译代码、甚至运行 Docker——而这一切都不需要虚拟机那笨重的隔离层。微软官方对此的解释是:“我们只是给 NT 内核打了个 Linux 兼容补丁啦~” (OS 宅狂喜)

一种相当刺激的使用方式,莫过于看两个系统互相~~窥探对方隐私~~查看对方文件目录:

```bash
# 在WSL里查看Windows的C盘文件
ls /mnt/c/Users/YourName/Documents

# 在PowerShell里查看Linux根目录
wsl ls /home
```

这种跨系统的文件操作流畅得令人发指,以至于开发者们纷纷把项目扔进 WSL 的 `~/workspace`,然后在 VS Code 里用 **Remote-WSL** 插件远程开发——表面上是 Win 小姐在运行编辑器,实际干活的全是 Linux。

当然,Win 小姐偶尔也会吃醋:

- **显卡争夺战**:CUDA 程序在 WSL2 里跑得飞起,但游戏本用户常发现独显被 Linux 占了,大小姐打游戏时帧数暴跌
- **网络端口修罗场**:当 WSL 的 Apache 监听 80 端口时,IIS 会气得拒绝启动
- **文件权限三角恋**:用 Windows 编辑器修改 WSL 的文件可能导致权限错乱,Linux 小情人会委屈地报 `Permission denied`

不过这些问题都有解法,比如用 `wsl --shutdown` 强制重启小情人,或者配置 `%USERPROFILE%\.wslconfig` 限制他的资源占用。

这和我们常用的双系统并不一样。目前常用的双系统中,虽然两者实际是平等的,但是操作中往往是 Linux 装 grub 带 Windows,两者不能同时启动,也难以相互管理~~重婚罪~~。而 WSL 的全称 Windows **Sub**system for Linux 道明了一切:大小姐允许你脚踏两条船的前提是,她永远得是正宫!

~~呜呜我们 Linux 小姐还是太温柔了~~

等等,这次好像是 Windows 更温柔?这不对劲!(╯‵□′)╯︵┻━┻

## 其他

> 咕咕咕,后面有再加,欢迎去[LCPU Getting Started](https://github.com/lcpu-club/getting-started)提 Issue!
>
Expand Down
Loading