#23 Windows 操作习惯养成

2023-12-23

Windows 11

触摸板

  • 单指:点击,双击,双击拖动
  • 双指:滚动,点击(鼠标右键),捏合(缩放场景)
  • 三指:
  • 上、下:多任务视图/显示桌面
  • 左、右:切换应用
  • 点击:搜索
  • 四指:
  • 上、下:多任务视图/显示桌面(调整为:最大化窗口/最小化窗口)
  • 左、右:切换桌面
  • 点击:通知中心

快捷键

按键 作用
Win + ~ 下拉命令行窗口

TAB

按键 作用
Win + Tab 多任务视图
Alt + Tab 切换应用
Alt + Ctrl + Tab 应用切换(应用选择)

任务栏应用

按键 作用
Win + Num 启动任务栏应用/窗口切换
Win + Ctrl + Num 启动任务栏应用/窗口切换(有点不一样)
Win + Shift + Num 启动任务栏应用(新窗口)
Win + Shift + Alt + Num 启动任务栏应用(管理员权限)
Win + Alt + Num 任务栏应用菜单

#22 WSL git 太慢

2023-10-15

使用 WSL 的时候 git 用得简直令人难受,每次切换环境(Windows 和 WSL),都需要 Refresh Index,一次就得二十几秒。

最后只好搞一个别名:

# 5.15.90.1-microsoft-standard-WSL2
if [[ "`uname -r`" == *WSL2 ]]; then
    SHMODE=wsl
fi

if [[ $SHMODE == "wsl" ]]; then
    alias git=git.exe
fi

这是我的本地环境中截出来得一点,其实还做了一些其他得适配,总算能够接受了。

原因

暂时没有读到相关资料。
WSL 已经出来很久了,可是这些性能问题微软还是没有解决,可能是他们不想解决。

参考资料与拓展阅读

#21 Windows 10 开发环境重装笔记

2023-07-03

基础环境:Windows 10 (带 Edge)

  1. 驱动更新

  2. 激活

  3. Windows 更新
    PS:系统更新之后就会有 winget 了

  4. 用户目录下的文件夹链接到移动磁盘
    视频,图片,文档,下载,音乐

  5. 360 “优化” 一番

  6. 360安全卫士

  7. 驱动大师
  8. 360压缩

  9. 复制目录 .ssh, .config 目录

  10. 配置网络代理 + 办公网络 VPN

  11. 安装软件

winget 在 msstore 中叫做“应用安装程序”
Windows Terminal 也可以在 msstore 中找到

winget install Microsoft.VisualStudioCode
winget install Microsoft.Edge
winget install Microsoft.WindowsTerminal

winget install Git.Git
winget install qishibo.AnotherRedisDesktopManager # 导入配置即可
winget install ScooterSoftware.BeyondCompare4
winget install KeePassXCTeam.KeePassXC
winget install Apifox.Apifox

# winget install Tencent.wechat-work
winget install Tencent.WeCom
winget install Tencent.WeChat

winget install Python.Python.3.8
winget install GoLang.Go

winget install voidtools.Everything
winget install hluk.CopyQ

winget install Nutstore.Nutstore
winget install NetEase.YoudaoNote # 有道云笔记
winget install NetEase.CloudMusic # 有道云音乐

# winget install iFlytek.iFlyIME # 讯飞输入法
winget install Rime.Weasel # 小狼毫输入法(Rime)

# 无需安装,走笔记本中转
# winget install OpenVPNTechnologies.OpenVPNConnect

其他软件:

  • Filezilla Client

无需安装:

  • GFW,走笔记本中转
  • HeidiSQL(Portable 版本)

Edge 浏览器

  1. 自动更新:... > 帮助与反馈 > 关于 Microsoft Edge
  2. 登录账号,自动同步
  3. 同步需要一段时间,可以先安装上 SwitchyOmega:
    https://microsoftedge.microsoft.com/addons/search/switchyomega?hl=zh-CN

VSCode

  1. 登录账号,自动同步
  2. 同步需要一段时间,可以先安装上 Remote - SSH

Windows Terminal

  1. 配置上开发机器的 SSH 连接,作为默认会话
  2. 记住 GitBash 的快捷键

访问开发机器 zsh 的时候,Home / End 失灵,只能 Ctrl + A / Ctrl + E 代替。

  1. bash 没有问题
  2. Putty 连接 zsh 也是好的

经过一番实验,发现使用 Git 带的 ssh 就好了:

# C:\Windows\System32\OpenSSH\ssh.exe
C:\Users\Administrator>ssh -V
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5

# C:\Program Files\Git\usr\bin\ssh.exe
C:\Users\Administrator>"C:\Program Files\Git\usr\bin\ssh.exe" -V
OpenSSH_9.0p1, OpenSSL 1.1.1p  21 Jun 2022

# 作为对照,这是开发机器 (Ubuntu 22.10) 上的 SSH 版本:
ssh -V
OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022
"C:\Program Files\Git\usr\bin\ssh.exe" markjour@172.16.0.49 -F C:\Users\Administrator\.ssh\configwin

Git Bash

~/.bash_profile

test -f ~/.profile && . ~/.profile
test -f ~/.bashrc && . ~/.bashrc

~/.bashrc

source ~/Projects/StdEnv/aliases/main.sh

旧磁盘格式化 + 反复覆写

dd if=/dev/zero of=/e/bigfile bs=10M

#20 winget 安装 MariaDB

2022-08-17

部署

# 安装 <https://winget.run/pkg/MariaDB/Server>
winget install mariadb.server

# 这一步应该是安装程序自动执行了
# 但是没有自动安装服务,也没有为 root 配置密码
# 有很多参数,可以参考 `mysql_install_db --help`
# mysql_install_db

# 安装服务
& 'C:\Program Files\MariaDB 10.8\bin\mysqld.exe' --install-manual MariaDB
# 根据资料,可以指定配置文件,但是我没有这么操作过,都是用的默认值:
# --defaults-file=D:\DB02\my.ini
# 如果启动另一个服务进程,记得在配置文件中指定新的 datadir

# 启动服务
# services.msc 中手动启动服务,或者,
# 管理员权限启动命令行,然后执行:
net start MariaDB
sc start MariaDB

# 停止服务
net stop MariaDB
sc stop MariaDB

# 删除服务
sc delete MariaDB
C:\>dir "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MariaDB 10.8 (x64)"
 驱动器 C 中的卷是 Windows
 卷的序列号是 56D1-41EB

 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\MariaDB 10.8 (x64) 的目录

2022/08/15  21:33    <DIR>          .
2022/08/15  21:33    <DIR>          ..
2022/08/15  21:33             1,154 Command Prompt (MariaDB 10.8 (x64)).lnk
2022/08/15  21:33               909 Database directory (MariaDB 10.8 (x64)).lnk
2022/08/15  21:33             1,000 Error log (MariaDB 10.8 (x64)).lnk
2022/08/15  21:33               944 HeidiSQL.lnk
2022/08/15  21:33             1,000 my.ini (MariaDB 10.8 (x64)).lnk
2022/08/15  21:33             1,208 MySQL Client (MariaDB 10.8 (x64)).lnk
               6 个文件          6,215 字节
               2 个目录 309,073,027,072 可用字节

默认的 MariaDB 安装在 C:\Program Files\MariaDB 10.8,数据在 data 子目录,配置文件 my.ini 就在 data 子目录。
PS:震惊,我才发现 MariaDB 自带了一个 heidisql!!!

设置密码

这个时候可以直接通过 root 登录上去,不需要密码。
搜索 mysql.user 可以发现:

MariaDB [(none)]> select host, user, password, plugin, authentication_string from mysql.user;
+-----------+-------------+----------+-----------------------+-----------------------+
| Host      | User        | Password | plugin                | authentication_string |
+-----------+-------------+----------+-----------------------+-----------------------+
| localhost | mariadb.sys |          | mysql_native_password |                       |
| localhost | root        |          |                       |                       |
| victus    | root        |          |                       |                       |
| 127.0.0.1 | root        |          |                       |                       |
| ::1       | root        |          |                       |                       |
+-----------+-------------+----------+-----------------------+-----------------------+
5 rows in set (0.001 sec)
mariadb-admin status -uroot
mysql -uroot

# 设置密码
# 如果忘记密码登录不进去了,怎么重置,这是另一个话题了
& 'C:\Program Files\MariaDB 10.8\bin\mysqladmin.exe' -uroot password 123456

默认配置

SHOW VARIABLES LIKE "%char%";
Variable_name Value
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database latin1
character_set_filesystem binary
character_set_results utf8mb4
character_set_server latin1
character_set_system utf8mb3
character_sets_dir C:\Program Files\MariaDB 10.8\share\charsets\
SHOW VARIABLES LIKE "%system%";
SHOW VARIABLES LIKE "%log%";
SHOW VARIABLES LIKE "%version%";
SHOW VARIABLES LIKE "%dir%";

SHOW CHARACTER SET;
SHOW COLLATION;

#19 Win11 右键菜单

2022-08-13

Windows 11 右键菜单样式调整了,像是变成两级了,我经常需要点击 “显示更多选项”(Show more options),感觉很麻烦,今天在网上找到了解决办法:

# enable
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve​

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

# restart explorer
taskkill /f /im explorer.exe
start explorer.exe

#18 winget: Windows 包管理工具

2022-06-04
winget list
winget list -?
winget search xxx     # 搜索
winget install xxx    # 安装
winget upgrade        # 列出 upgradable 包
winget upgrade xxx    # 升级指定包
winget upgrade --all  # 升级
winget
Windows 程序包管理器 v1.3.2691
版权所有 (C) Microsoft Corporation。保留所有权利。

WinGet 命令行实用工具可从命令行安装应用程序和其他程序包。

使用情况: winget [<命令>] [<选项>]

下列命令有效:
  install    安装给定的程序包
  show       显示包的相关信息
  source     管理程序包的来源
  search     查找并显示程序包的基本信息
  list       显示已安装的程序包
  upgrade    显示并执行可用升级
  uninstall  卸载给定的程序包
  hash       哈希安装程序的帮助程序
  validate   验证清单文件
  settings   打开设置或设置管理员设置
  features   显示实验性功能的状态
  export     导出已安装程序包的列表
  import     安装文件中的所有程序包

如需特定命令的更多详细信息,请向其传递帮助参数。 [-?]

下列选项可用:
  -v,--version  显示工具的版本
  --info        显示工具的常规信息

可在此找到更多帮助: https://aka.ms/winget-command-help

#17 ReactOS: 开源版的 Windows

2022-04-29

我对开发者十分佩服,几十年如一日的开发这样一个现阶段明显没有盈利可能的系统。等这个项目稳定下来之后,或许很多古老的遗留系统可以收益。

相关的镜像可以在 SourceForge 上取得, 最新的版本是 03/31 发布的 0.4.14 release 19,可以下载 LiveCD 体验。
PS:完整的 ISO 只有 110M,Live 版 80M。
PS:最新版完整镜像的下载链接: https://sourceforge.net/projects/reactos/files/latest/download

项目介绍

1995 年,FreeWin95 项目
1998 年,ReactOS 项目启动

主要用 C 编写。目标是完全不采用 Windows 代码的前提下,对 x86/amd64 平台的 Windows NT 5.2 (Windows Server 2003) 兼容。
代码审核非常严格,曾经由于被怀疑用了反编译 Windows 的代码而自行开展大规模的代码审查。
研发团队规模有限。

GitHub 地址: https://github.com/reactos/reactos
stars watchers forks
license commit freq

推荐的硬件配置:

  1. CPU: x86/amd64 兼容处理器
  2. 内存:256MB (最小 64MB)
  3. 硬盘:IDE/SATA,主分区至少 350MB
  4. 显卡:2MB VGA
  5. CD-ROM,普通键鼠

体验感受

VirtualBox 4C1G 虚拟机,起最新版 Live 镜像,大概 2 分钟后进入桌面(Installing devices 这一步太久了)。
选的 Chinese (RPC) 语言,然后 US 键盘。Run ReactOS Live CD 进来之后,中文都是小方框。
然后重启,选择安装 (Install ReactOS),提示需要插入安装媒体。
然后还是换成 English (United States) 语言, 可以进入桌面,但是感觉不怎么流畅。

参考资料与拓展阅读

#16 Windows 10 在磁贴中新建快捷方式

2021-06-27

一般安装的软件都可以在开始菜单的 “所有应用” 中看到,选 “固定到开始屏幕” 就行了。

不过,那些 Portable 的绿色软件,如果要放进去怎么弄呢?

  1. 创建快捷方式(我一般直接发送快捷方式到桌面)
  2. 将快捷方式复制到 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\
    我一般会改个名,比如:qq.exe => QQ
  3. 现在会发现 所有应用 里面出现了新增的那个快捷方式
  4. 然后,就是固定到开始屏幕就行了。

#14 Windows 命令行操作

2021-03-07

cmd

  • 大小写不敏感
  • 参数通常是 / 开头,而不像 Unix 下是 -
  • 帮助: -help, /?
  • | 管道、> 输出重定向、>> 输出重定向(追加)、< 输入重定向、<< EOF heredoc、<<< CONTENT 输入重定向(字符串)作用和 Linux 相同
  • Ctrl + C 退出执行
help
help | more
dir C:\Windows\System32\*.exe
dir C:\Windows\System32\*.msc

export
echo
cls         # 类似 clear

tasklist
taskkill

cd
mkdir / md
del         # 类似 rm
del /q anydir
rd          # 删除目录(非空目录不可删除)
dir         # 类似 ls
tree
find
findstr     # 类似 grep

ping
ipconfig
netstat
tracert
route
dig
nslookup

shutdown -s -t 300 # 定时关机

explorer # 文件浏览器
notepad  # 记事本
taskmgr  # 命令管理器
regedit  # 注册表编辑器

services.msc # 服务

注册表

Registry, 港澳台地区称之为登录档。就是一个树形结构的数据库,存放系统和应用程序的配置信息。

Linux 下各个应用程序,甚至操作系统的各组件都采用不同的配置文件存储在不同的地方,但 Windows 却采用了这种集中式存储。

https://zh.wikipedia.org/zh-hans/注册表

名称 作用
HKEY_CLASSES_ROOT 存储Windows可识别的文件类型的详细列表,以及相关联的程序。
HKEY_CURRENT_USER 存储当前用户设置的信息。
HKEY_LOCAL_MACHINE 包括安装在计算机上的硬件和软件的信息。
HKEY_USERS 包含使用计算机的用户的信息。
HKEY_CURRENT_CONFIG 这个分支包含计算机当前的硬件配置信息。

常见数据结构:

  • REG_SZ 字符串
  • REG_BINARY 二进制
  • REG_DWORD 32 位二进制值,显示为 8 位的十六进制数
  • REG_MULTI_SZ 多字符串,nul 隔开,结尾两个 nul
  • REG_EXPAND_SZ

python 有内置库 winreg 可以用来操作注册表。

import winreg
reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
key_name = r'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
key = winreg.OpenKey(reg, key_name)
for i in range(1024):
    try:
        sub_key_name = winreg.EnumKey(key, i)
        sub_key = winreg.OpenKey(key, sub_key_name)
        value = winreg.QueryValueEx(sub_key, "DisplayName")
        print('%s: %s' % (sub_key_name, value))
    except EnvironmentError:
        break

Services

# 小心 sc 命令中比较另类的等于号后有空格设计
sc create memcached binPath= "c:\memcached.exe -l 0.0.0.0 -m 128 -d" DisplayName= "Memcached" start= auto

PowerShell

虽然使用频率不高,但和 PowerShell 少有的几次接触感觉很好,很强大。其结构化而非文本的数据结构让人印象深刻。

  • 别名
  • 函数
  • cmdlet
  • 命令
get-alias | findstr /I get-alias
gal | findstr ls

man
help
ls   # Get-ChildItem
ps   # Get-Process
ps | select Name, Id
ps | ft -Property Id, ProcessName, Handles, VM, WS, CPU -AutoSize
ps | where { $_.Name -eq "explorer" }
curl # Invoke-WebRequest
rm      # Remove-Item
rmdir   # Remove-Item
ni -ItemType File -Path C:\Users\Administrator\file.txt  # New-Item
cp      # Copy-Item
cp -Path C:\Users\Administrator\file.txt -Destination D:\Temp\

gcm  # Get-Command
shcm # Show-Command

get-volume

工具

GUI

  • process explorer
  • everything
  • HeidiSQL
  • PuTTY
  • WizTree 目录分析

包管理

  • choco (chocolatey)
  • scoop
  • winget

安装包格式

  • MSI 官方出品, Windows Installer
  • NSIS Nullsoft Scriptable Install System, zlib license
  • WiX
  • Inno Setup