Windows 工作环境 Config 札记

开发人员长期以来对于 Microsoft Windows 操作系统总抱以嗤之以鼻的态度,笔者亲身经历了Windows XPWindows 7Windows 10的版本演变过程,抛开众所周知的偏见,事实上是能够感觉到系统稳定性、用户体验方面的大幅改善的,叠加近年来 CmderNeovim 等辅助开发工具的出现与逐渐成熟,作为软件开发环境,其使用体验已经完全可以与 Linux 媲美,并在图形界面的稳定性以及交互的友好性方面胜于后者。

但是对于广大硬件电子工程师而言,Altium DesignerPadsAllegro 等商业 EDA 工具仅提供支持 Windows 操作系统的版本,而高频高速 PCB 电路设计基本离不开 Windows 操作系统环境,因而 Windows 和 Linux 在笔者日常工作里都各自拥有着其不可替代性。本文主要用于记录一些笔者使用 Windows 10 操作系统的配置和习惯,便于切换到新的工作环境时快速的展开,因而全文也将会持续保持更新。

下载官方系统镜像

采用 Linux 操作系统下的浏览器访问如下的 微软官方 Windows 10 下载地址,即可获得最新的官方 Windows 10 操作系统正版镜像文件:

1
https://www.microsoft.com/zh-cn/software-download/windows10ISO/

查看系统基本信息

从 PowerShell 运行下面命令可以查看当前 Windows 10 操作系统的基本信息:

1
λ systeminfo

按下【Windows + R】快捷键运行如下命令则可以查看到进一步的系统相关信息:

  • slmgr.vbs -dlv 命令:查询系统激活信息,包括激活 ID、安装 ID、激活截止日期等;
  • slmgr.vbs -dli 命令:查询系统版本、部分产品密钥、许可证状态等;
  • slmgr.vbs -xpr 命令:查询 Windows 是否永久激活;
  • winver 命令:查询系统内核版本,以及注册用户;

基础系统设定

桌面图标设置

打开桌面鼠标右键菜单上的 个性化,然后依次选择主题 -> 桌面图标设置,并且勾选以下设置项即可:

皮肤颜色

选择鼠标右键菜单上的 个性化,然后依次选择颜色,参考下图选择设置即可:

删除确认

Windows 10 删除文件时,默认并不会显示删除确认对话框,可以鼠标选中桌面的回收站图标,然后右键属性,在弹出对话框当中勾选 显示删除确认对话框

资源管理器打开此电脑

鼠标点击 Windowns 10 任务栏上的文件资源管理器图标,默认会打开快速访问下的常用文件夹,如果希望打开的是【此电脑】窗口,需要选择资源管理器菜单栏上的【查看】选项卡,然后点击【选项】:

在弹出的【文件夹选项】对话框中的下拉菜单选择设置为此电脑

注意:除此之外,还可以在此步骤取消上图红色圈出部分在"快速访问"中显示...的勾选。

关闭自动播放

打开 Windows 10 的资源管理器,然后通过地址栏打开 控制面板\所有控制面板项\自动播放 取消勾选 为所有媒体和设备使用自动播放

电源计划

打开资源管理器,在地址栏打开 控制面板\所有控制面板项\电源选项

然后,鼠标点击左侧【选择电源按钮的功能】,并进行如下设置:

最后,鼠标点击左侧【选择关闭显示器的时间】,并进行如下设置:

任务栏设置

鼠标进入【任务栏】区域,然后点击鼠标右键,选择任务栏管理器,然后修改下图橙色框选部分即可:

取消大小化窗口动画

鼠标选中桌面上的【此电脑】,右键选择【属性】,然后再点击右侧的高级系统设置,依次按照下图从左至右操作即可:

修改计算机名称

鼠标选中桌面上的【此电脑】,右键点击【属性】,然后选择高级系统设置,依次按照下图从左至右进行设置操作:

开始菜单显示

首先,桌面鼠标右键选择【个性化】;然后,在弹出的【设置】对话框选择开始项,并进行如下配置:

打开注册表

注册表(Registry)用于存储 Windows 10 操作系统以及应用程序的一些设置信息,注册表编辑器可以通过如下 2 种方式打开:

  • 在【运行】输入框里面输入 regedit 命令;
  • 在资源管理器地址栏输入 C:/windows/regedit.exe

编辑本地组策略

组策略(Group Policy)用于集中化的管理与配置 Windows 10 操作系统与应用程序以及活动目录中的用户设置,本地组策略编辑器可通过下面 2 种方式打开:

  • 在【运行】输入框里面键入 gpedit.msc 命令;
  • 在资源管理器地址栏输入 C:\Windows\system32\gpedit.msc

添加环境变量

PATH

1
D:\Software\Tech\CMake\bin;D:\Software\Tech\Curl\bin;D:\Software\Tech\Git\bin;D:\Software\Tech\Go\bin;D:\Software\Tech\JDK\bin;D:\Software\Tech\Neovim\bin;D:\Software\Tech\Nginx;D:\Software\Tech\Nodejs;D:\Software\Tech\Python;D:\Software\Tech\Ruby\bin;D:\Software\Tech\Tomcat\bin;D:\Software\App\Pandoc;
1
D:\Software\Tech\Qt\5.14.2\mingw73_64\bin;D:\Software\Tech\Qt\Tools\mingw730_64\bin;

JAVA_HOME

1
D:\software\Tech\JDK

关闭自动升级

  • Win+R运行services.msc打开服务,找到Windows Update设置启动类型为禁用
  • Win+R运行gpedit.msc打开组策略编辑器,依次进入计算机配置-管理模板-Windows组件-windows更新目录,找到配置自动更新选项双击打开并选择已禁用

不显示锁屏界面

对于 Windows 10 专业版,在资源管理器的地址栏输入 C:\Windows\system32\gpedit.msc,或者直接在【运行】框执行 gpedit.msc 命令打开组策略编辑器,并依次进入计算机配置-管理模板-控制面板-个性化目录,选择右则个性化选项的不显示锁屏并设置为已启用

对于 Windows 10 家庭版,由于没有预装组策略编辑器,所以需要采用修改注册表的办法禁用锁屏。按下【Win + R】并且输入regedit打开注册表编辑器,依次展开HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows,在鼠标右键Windows的菜单项当中,选择【新建项】并将其命名为Personalization,在该项下面新建【DWORD(32 位)值】NoLockScreen,并将其数值数据修改为1

注意:如果希望打开 Windows 10 家庭版上的组策略编辑器,可以参见《开启家庭版组策略》小节内容。

开启 Home 版组策略

将下面代码保存为.bat批处理文件,然后以管理员方式执行,即可打开 Windows 10 家庭版的组策略编辑器。

1
2
3
4
5
6
7
8
9
10
11
@echo off

pushd "%~dp0"

dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt

dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt

for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"

pause

KMS 激活

如果当前使用的是 Windows 10 专业版,那么可以使用向微软官方购买的正版激活密钥,并以管理员方式运行如下命令:

1
2
3
4
slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
# slmgr /skms kms.xspace.in
slmgr /skms kms.03k.org
slmgr /ato

如果当前使用的是 Windows 10 家庭版,则需要将密钥更换为相应的官方正版密钥,然后同样以管理员方式运行命令:

1
2
3
slmgr /ipk PVMJN-6DFY6-9CCP6-7BKTT-D3WVR
slmgr /skms kms.03k.org
slmgr /ato

注意:上述脚本里的kms.xspace.inkms.03k.org仅作为激活方法示例,如需正确稳定的激活系统,请使用微软官方的 KMS 服务地址。

安装 Hyper-V

Hyper-V 是 windows 10 自带的虚拟机工具,打开控制面板\所有控制面板项\程序和功能,然后点击左侧的启用和关闭windows程序,在弹出界面勾选如下选项,然后重启计算机:

从 EFI 移除 GRUB

计算机同时安装有 Linux 与 Windows 双系统的情况下,如果仅仅移除 Linux 分区,那么 BIOS 依然能够读取到遗留的 Linux 启动项。如果需要彻底删除该启动欺罔 ,则需要通过 Windows 10 进入 Boot EFI 并且删除 GRUB 目录。以管理员身份运行 Windows PowerShell,执行如下命令:

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
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。

尝试新的跨平台 PowerShell https://aka.ms/pscore6

PS C:\Windows\system32> diskpart

Microsoft DiskPart 版本 10.0.18362.1

Copyright (C) Microsoft Corporation.
在计算机上: WINDOWS-10

DISKPART> list disk

磁盘 ### 状态 大小 可用 Dyn Gpt
-------- ------------- ------- ------- --- ---
磁盘 0 联机 447 GB 0 B *
磁盘 1 联机 119 GB 119 GB

DISKPART> sel disk 0 # 选择具有 GPT 分区的磁盘

磁盘 0 现在是所选磁盘。

DISKPART> list vol

### LTR 标签 FS 类型 大小 状态 信息
---------- --- ----------- ----- ---------- ------- --------- --------
0 C System NTFS 磁盘分区 58 GB 正常
1 D Recovery FAT32 磁盘分区 100 MB 正常
2 E Hank NTFS 磁盘分区 193 GB 正常 系统

DISKPART> sel vol 2 # 选择具有 FAT32 文件系统的卷

2 是所选卷。

DISKPART> assign letter=E # 分配驱动器代号

DiskPart 成功地分配了驱动器号或装载点。

DISKPART> exit # 退出 diskpart 程序

退出 DiskPart...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
PS C:\Windows\system32> cd E:      # 进入 Boot EFI 所在分区
PS E:\> cd EFI # 进入 Boot EFI 目录
PS E:\EFI> ls

目录: E:\EFI

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2020/5/23 16:55 Boot
d----- 2020/5/23 16:55 Microsoft
d----- 2020/5/23 16:55 Ubuntu


PS E:\EFI> rmdir ubuntu # 删除 EFI 下的 ubuntu 目录
PS E:\EFI> ls

目录: E:\EFI

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2020/5/23 16:55 Boot
d----- 2020/5/23 16:55 Microsoft

移除隐藏分区

通过【运行】进入 Windows 10 的 CMD 命令行界面,然后输入 diskpart 命令进入系统自带的硬盘分区管理工具:

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
Microsoft DiskPart 版本 10.0.17763.1
Copyright (C) Microsoft Corporation.

DISKPART> rescan

DiskPart 正在扫描你的配置,请稍候...

DiskPart 已扫描完你的配置。

DISKPART> list disk

磁盘 ### 状态 大小 可用 Dyn Gpt
-------- ------------- ------- ------- --- ---
磁盘 0 联机 476 GB 0 B *

DISKPART> select disk 0

磁盘 0 现在是所选磁盘。

DISKPART> list partition

分区 ### 类型 大小 偏移量
------------- ---------------- ------- -------
分区 1 系统 350 MB 1024 KB
分区 2 保留 128 MB 351 MB

DISKPART> select partition 2

分区 2 现在是所选分区。

DISKPART> delete partition override

注意:删除隐藏分区之后,打开【创建并格式化硬盘分区】界面,选择 C 盘合并隐藏分区所占用的空间即可。

Windows + Linux 时间同步

当计算机同时安装有 Windows 和 Linux 操作系统的时候,会出现 Windows 系统时间无法正常显示的问题,需要Win+R运行 regedit 打开注册表编辑器,然后找到下面目录的位置:

1
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/TimeZoneInformation/

鼠标右键新建QWORD(64 位)值,键为RealTimeIsUniversal值为1,然后重启 Windows 10。

安装 Visual Studio

参考《创建 Visual Studio 的脱机安装》一文,从 Visual Studio 的历史版本中下载vs_community.exe安装引导程序,然后在所在目录打开 PowerShell 并使用下面命令创建针对 C++ 桌面开发的本地缓存:

1
.\vs_community.exe --layout D:\Download\Visual-Studio-2017 --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --lang zh-CN

安装 OpenCV

建立 OpenCV 目录,然后下载 OpenCV 源代码并解压至该目录,最终得到如下目录结构:

1
2
3
4
5
6
7
C:\Software\Tech\OpenCV> ls

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2020/5/25 17:29 build
d----- 2020/5/25 12:42 opencv-3.4.10
d----- 2020/3/26 16:03 opencv_contrib-3.4.10

首先,安装 Python2,并将其安装目录添加至PYTHON2_EXECUTABLE环境变量:

然后,将如下安装过程中无法下载的文件放置到OpenCV\opencv_contrib-3.4.10\modules\xfeatures2d\src

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\raspberry-pi-opencv-patch-master> ls

Mode LastWriteTime Length Name
---- ------------- ------ ----
------ 2020/3/15 3:57 14852 boostdesc_bgm.i
------ 2020/3/15 3:57 14864 boostdesc_bgm_bi.i
------ 2020/3/15 3:57 7832 boostdesc_bgm_hd.i
------ 2020/3/15 3:57 138093 boostdesc_binboost_064.i
------ 2020/3/15 3:57 275322 boostdesc_binboost_128.i
------ 2020/3/15 3:57 549754 boostdesc_binboost_256.i
------ 2020/3/15 3:57 426280 boostdesc_lbgm.i
------ 2020/3/15 3:57 1257733 vgg_generated_120.i
------ 2020/3/15 3:57 773330 vgg_generated_48.i
------ 2020/3/15 3:57 915012 vgg_generated_64.i
------ 2020/3/15 3:57 1012932 vgg_generated_80.i

接下来打开 CMake 图形界面配置工具,选择opencv-3.4.10源码包的位置以及编译输出的build目录:

opencv-3.4.10配置完成以后,还需要继续对opencv_contrib-3.4.10扩展模块的路径进行配置,需要修改的配置项如下所示:

1
2
3
4
WITH_QT                              [ √ ]
WITH_OPENGL [ √ ]
OPENCV_EXTRA_MODULES_PATH C:/Software/Tech/OpenCV/opencv_contrib-3.4.10/modules
OPENCV_ENABLE_ALLOCATOR_STATS [ ]

配置完成之后,再次点击【Configure】,当出现Configuring done提示信息时,如果发现配置界面还存在红色配置框,则继续点击【Configure】直至界面恢复正常:

最后,【Configure】完成以后,点击【Generate】按钮生成用于编译的源文件,直至界面同时提示Configuring done Generating done信息。

注意:如果发现 CMake 配置过程中,发生face_landmark_model.dat无法下载的问题,则可以打开OpenCV\build里的CMakeDownloadLog.txt文件,里边包含了未能成功下载的文件地址,复制这些地址离线下载之后。将其保存在OpenCV\opencv-3.4.10\.cache目录下,其中ippicv.zip保存在ippicv子目录,face_landmark_model.dat保存在data目录。注意命名规则需要满足MD5 + 文件名格式,例如7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat,否则 CMake 仍然会重新下载。

打开 PowerShell 进入build目录,执行mingw32-make命令开始编译源文件:

注意:此时,如果发生opencv-3.4.10\modules\videoio\src\cap_dshow.cpp文件相关的错误,则需要在该文件的头部加入#define STRSAFE_NO_DEPRECATE语句忽略安全检查定义。

完成之后,再运行mingw32-make install安装编译后的二进制文件:

最后,将OpenCV\build\bin路径加入到 Windows 10 的 PATH 环境变量即可完成 OpenCV 的全部安装过程。

修改 hosts

通过修改 C:\Windows\System32\drivers\etc 下的 hosts 文件,可以将指定的域名映射到本机服务地址:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1 hank
127.0.0.1 uinika.test

除此之外,还可以通过开源工具软件 Hosts File Editor 提供的图形界面来执行修改操作:

注意:如果当前使用的是谷歌 Chrome 浏览器,则 hosts 文件当中配置的域名不能带有 dev 字样,否则无法进行正常的访问。

制作本地证书 mkcert

Mkcert 是一款用于制作本地可信证书的简单工具,下载之后将其路径加入环境变量,然后执行 mkcert -install 命令安装根证书:

1
2
3
4
5
λ mkcert -install

The local CA is already installed in the system trust store! �
Note: Firefox support is not available on your platform. ℹ️
The local CA is already installed in Java's trust store! �

然后执行 mkcert uinika.test 创建域名 uinika.test 对应的本地服务器证书:

1
2
3
4
5
6
7
8
λ mkcert uinika.test

Created a new certificate valid for the following names �
- "uinika.test"

The certificate is at "./uinika.test.pem" and the key at "./uinika.test-key.pem"

It will expire on 21 April 2024 �

将上述步骤获得的 uinika.test.pemuinika.test-key.pem 证书文件上传至 Web 服务器即可进行使用,如果需要在 webpack 本地开发里使用 https 协议,则需要向 webpack-dev-server 插件添加如下配置选项:

1
2
3
4
5
6
7
8
9
devServer: {
host: "uinika.test",
port: 80,
disableHostCheck: true,
https: {
key: fs.readFileSync(path.resolve(__dirname, "C:/Workspace/uinika.test.pem")),
cert: fs.readFileSync(path.resolve(__dirname, "C:/Workspace/uinika.test-key.pem")),
},
}