Windows 系统及相关功能 

Last Update: 2024-06-03

目录

Windows 通用

Windows 文件系统中几个目录的用途

关于软件安装和 数据存放的位置,取决于软件开发者和安装包制作工具的设置。

重建 icon 缓存 (icon 显示异常)

清除 Windows 中的图标缓存后,Windows 会自动重建对应的图标缓存。

把以下指令保存到 .bat 文件后,执行此 .bat 文件以清除图标缓存 (可以多执行几次):

cd /d %userprofile%\AppData\Local\Microsoft\Windows\Explorer
taskkill /f /im explorer.exe
attrib -h iconcache_*.db
del iconcache_*.db /a
start explorer
pause

或者也可以在 CMD 中以下命令来清除 icon 缓存:

ie4uinit -show

进不去 BIOS

电脑可以进系统,但无法使用正确的快捷键进入 BIOS 配置。在电源选项里把 快速启动 关闭就行。

以管理员身份登录系统

以管理员身份运行 CMD 并执行 net user administrator /active:yes

此时管理员账户已开启,在开始菜单点击用户头像就可以看到切换选项。

激活信息查询

用 PowerShell 执行 slmgr /dlv 可以查看详细的激活信息。

注册表定位到 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform 下,属性 BackupProductKeyDefault 对应的值是激活码。

网络驱动器自动断线的问题

在注册表里更改自动断开连接的时间即可:

修改文件的默认打开程序

涉及的注册表项目有:

在上述注册表路径中删除对应的项目即可。

让程序自动启动的方法

使用 msconfig

用 Win+R 调出 '运行' 界面之后,执行 msconfig 打开系统设置,切换到 '启动' 选项卡内可以为程序设置开机启动。

能在这里显示出的软件都是在注册表中有定义的软件,如果软件未在注册表中注册,那么这里可能找不到对应的软件。

使用开始菜单

对要配置开机启动的程序生成快捷方式后,放到下面指定的目录中。

对当前用户生效: %appdata%\Microsoft\Windows\Start Menu\Programs\StartUp

对所有用户生效: %ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp

使用注册表

可以在以下的注册表路径中配置要启动的程序:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run (常用)
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run (常用)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

只需要在上面列表中给出的目录下添加一个字符串值,将需要启动的应用程序路径添加到值即可。

删除 windows server 备份

wbadmin.exe 是用来管理备份和恢复系统、文件的软件。

vssadmin.exe 也是用来管理 VSS 服务的软件,但是查了很多博客都说这个软件自 Win Server 2008 似乎已经被放弃了。

虽然这个软件依旧可以用,但是用这个软件操作完之后并不能在 Windows Server 备份的 UI 界面上显示正确的结果。

即使操作完再用 wbadmin 检查也不能得到正确输出,但操作确实成功了。

所以尽量不要用 vssadmin.exe,要用 wbadmin.exe 来管理备份。

计算机管理 -> Windows Server 备份 -> 本地备份 选项卡里可以看到所有备份,但是删除备份只能手动敲命令。

用 wbadmin 删除备份之后,在 UI 里可以看到硬盘占用减少了,但是备份数量要刷新之后才能正确显示。

删除冗余的开机启动项

更新系统 / 软件抽风之后,有时会重复设置开机启动,也就是在注册表里添加开机启动项的路径。

重复的开机启动项可能在注册表的以下两个路径中:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

注: 大概率在第一条路径中。

在路径下找到重复项删除即可。

如果无法判断应该删除哪个,那么可以全部删除,然后重新设置开机启动。

解除硬盘的写保护

SSD 或者 HDD 过热时会主动断电,可能造成 FTL 表损坏,进而出现掉盘。

如果系统盘掉盘则会蓝屏,重启则会进入 BIOS (并且在 BIOS 里依旧找不到装有系统的硬盘);非系统盘掉盘则无法在文件管理器中找到盘符。在掉盘时马上重启系统的话,系统可能依旧无法认到盘。因为硬盘的 FTL 表必须完好,硬盘才能正常工作,但重建 FTL 的过程中会扫全盘数据。而扫全盘数据,很花时间。

所以此时最好的做法是就让机器开着,能进系统的就进系统,不能进系统的就进 BIOS 等着,等上半个小时再重启。不要频繁重启,重启会打断 FTL 的重建过程,这可能让硬盘丢数据。

即使认到盘了,也有可能出现写保护。可以打开 CMD 根据以下步骤操作关闭写保护:

C:\Users\lsz>diskpart

DISKPART> list disk

Disk ###  Status         Size     Free     Dyn  Gpt
--------  -------------  -------  -------  ---  ---
Disk 0    Online         1863 GB      0 B        *
Disk 1    Online          476 GB      0 B        *
Disk 2    Online          465 GB      0 B        *

DISKPART> select disk 1

Disk 1 is now the selected disk.

DISKPART> attributes disk
Current Read-only State : Yes
Read-only  : Yes
Boot Disk  : No
Pagefile Disk  : No
Hibernation File Disk  : No
Crashdump Disk  : No
Clustered Disk  : No

DISKPART> attributes disk clear readonly

Disk attributes cleared successfully.

DISKPART> attributes disk
Current Read-only State : No
Read-only  : No
Boot Disk  : No
Pagefile Disk  : No
Hibernation File Disk  : No
Crashdump Disk  : No
Clustered Disk  : No

现多个系统引导

以管理员身份打开命令提示符执行 bcdedit 命令后,正常来说会得到以下输出:

Windows 启动管理器
--------------------
标识符                  {bootmgr}
device                  partition=\Device\HarddiskVolume1
path                    \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description             Windows Boot Manager
locale                  zh-CN
inherit                 {globalsettings}
default                 {current}
resumeobject            {7b9d4bf4-62ac-11ea-b5c0-80fa5b564e9b}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows 启动加载器
-------------------
标识符                  {current}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 10
locale                  zh-CN
inherit                 {bootloadersettings}
recoverysequence        {7b9d4bf6-62ac-11ea-b5c0-80fa5b564e9b}
displaymessageoverride  StartupRepair
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {7b9d4bf4-62ac-11ea-b5c0-80fa5b564e9b}
nx                      OptIn
bootmenupolicy          Standard

如果有多余的输出则为其他系统的开机引导。

bcdedit /delete <id> /f 删除不需要的引导项,其中 <id>resumeobject 中对应的字符。

BitLocker 相关组策略

需要配置的组策略的路径为: 计算机配置 -> 管理模板 -> Windows 组件 -> BitLocker 驱动器加密

BitLocker 驱动器加密 这个根路径下:

BitLocker 驱动器加密 -> 操作系统驱动器:

配置 BitLocker 后需要手动启用 Windows 恢复环境

(配置 BitLocker 的时候会提示 '你将不再能够使用 Windows 回复环境,除非手动启用 Windows 恢复环境并将其移至系统驱动器')

在系统盘上建一个恢复分区 (用 diskpart 命令),以管理员身份执行 reagentc /enable 启用恢复分区 reagentc /info 查看恢复分区信息。

删除已经保存的 Windows 凭据 (已保存的账户与密码)

凭据管理的路径为 控制面板 -> 用户帐户 -> 凭据管理器 ,也可以使用 Win+R 执行 control userpasswords2 后再从 高级 -> 管理密码 打开凭据管理器。可以从这里删除不再需要的凭据。

其中, Windows 凭据 可以用于连接到 smb 共享或使用 rdp 登录到其他的主机。

执行 smb 目录中的 exe 文件时弹出安全警告对话框

双击 smb 目录中的 exe 文件会弹出一个「打开文件-安全警告」对话框,下方有小字:

「此文件位于你本地网络之外的位置。来自你无法识别的位置的文件可能会损害你的电脑。请仅在你信任该位置时才打开此文件。」

要解决这个问题,需要用 Win+R 执行 inetcpl.cpl 或从 控制面板 -> 网络和 Internet -> Internet 选项 打开 Internet 属性 对话框。

在这个对话框内的 安全 -> 选择一个区域以查看或更改安全设置 -> 选中 本地 Intranet -> 点击 站点 -> 点击 高级 进入添加可信网站的对话框。

将 smb server 的 IP 或域名添加到网站列表中即可在执行 smb 中的 exe 文件时不弹出安全警告对话框。

NTFS 文件系统扩容

扩容前要确认当前文件系统在创建时使用的簇大小参数:

分配单元大小 (簇/群集大小)最大的卷和文件
4 KB (默认大小)16 TB
8 KB32 TB
16 KB64 TB
32 KB128 TB
64 KB (早期最大值)256 TB
128 KB512 TB
256 KB1 PB
512 KB2 PB
1024 KB4 PB
2048 KB (最大大小)8 PB

Windows Server 2019 及更高版本、Windows 10 1709 及更高版本上,NTFS 支持 8 PB 大的卷 (早期版本最大支持 256 TB)。

如果簇大小选小了,只能导出数据后重新格式化,没有其它方法。

批量修改文件所有者

icacls D:\ /setowner <username> /t /c /q

Windows 10/11/Server2016,2019,2022

禁用空耗系统资源的定时任务

通过任务管理器看到,有一个名为 Microsoft Compatibility Telemetry 的进程经常出现,而且每次出现都会占用很多资源,导致 CPU 或磁盘利用率 100%。

Microsoft Compatibility Telemetry 的中文释义是 微软兼容性遥测

打开 控制面板 -> 系统和安全 -> 管理工具 -> 计划任务 ,再进入 任务计划程序库 -> Microsoft -> Windows -> Application Experience 。在中间的窗格中可以看到 Microsoft Compatibility Appraiser 任务的描述为:

如果已选择加入 Microsoft 客户体验改善计划,则会收集程序遥测信息。

显然,用户并不希望微软收集用户的信息。选中这个计划任务,再在右侧窗格找到 所选项 点击 禁用 这个任务就不会再被触发了。

任务管理器中不显示硬盘负载

这个问题大多出现在 Windows Server 上面。

以管理员启动 PowerShell 执行 diskperf -Y

在锁屏界面中无法通过键盘按键唤出密码输入框

设置 -> 账户 -> 登陆选项 -> 隐私 -> 更新或重启后,使用我的登陆信息自动完成设备设置并重新打开我的应用 取消勾选。

用户账户开机后自动登入 (启动用户登入才会自动启动的程序)

有些程序只有在用户登入之后才会启动,并且这是自动启动的唯一方式。

一个反例是 V2rayN。这个程序可以使用任务计划程序配置为在开机时,不论用户是否登入都以该用户的身份启动 V2rayN。但在用户真正登入后,无法在右下角的图标托盘中找到 V2rayN 程序的图标。此时可以从任务管理器中看到 V2rayN 程序已经启动。

如果此时再启动一个 V2rayN 则会导致 V2rayN 报错,内容为 v2fly/xray 内核无法监听对应端口。因为开机时启动的 V2rayN 程序已经启动了 v2fly/xray 来监听相应端口,用户登入后启动的 V2rayN 依旧试图启动新的 v2fly/xray 进程来监听已经被监听了的端口,才导致了报错。

所以,用户登入后启动 V2rayN 是让 V2rayN 正确自动启动的唯一方式。为了让程序正确地随机器开机而自动启动,就需要让用户在开机后自动登录。

可以使用微软官方出品的 SysinternalsSuite 套件中的 Autologon.exe/Augologon64.exe 程序来实现开机后用户自动登入的功能:

  1. 双击 Autologon.exe/Augologon64.exe
  2. 填入用户名和密码,点击 Enable 即可 (密码会被加密存储在上述注册表路径中)

注意,Autologon 不会验证提交的凭据,也不会验证指定的用户帐户是否允许登录到计算机。尽管密码在注册表中作为 LSA 机密 加密,但具有管理权限的用户可以轻松检索和解密密码。

若要关闭自动登录,则需要在输入用户名之后点击 disable 。此外,如果在系统执行自动登录之前按住 Shift 键,则将为该登录禁用自动登录。

也可以使用手动配置注册表的方式来完成开机后用户自动登录的功能,以下是需要配置的注册表内容:

(太麻烦,推荐使用 SysinternalsSuite 里的 Autologon.exe)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"AutoAdminLogon"="1"
"DefaultUserName"="<username>"
"DefaultPassword"="<password>"
; 如果加入了域,还需要下面这条
; "DefaultDomainName"="<fqdn>"

如果手动操作注册表的话,注意上面三 (或四) 个项目的类型都是字符串,即 REG_SZ 类型。可以先到对应注册表路径中看一下这些项目是否存在,原始值是什么。

开始菜单出现 ms-resource:applistname

在设置里看到这个应用的信息为人脉应用。无法使用右键选项卸载。

下面提供卸载方法:

以管理员身份运行 PowerShell,执行 Get-AppxPackage -AllUsers 获取系统所有已安装应用列表,从列表中找到要卸载的应用的全称,对应 PackageFullName 条目。可以把结果复制到记事本中查找关键字。

找到应用包全名称后,执行 Remove-AppxPackage <PackageFullName><PackageFullName> 替换为应用包全称即可卸载指定应用。

其他诸如照片、xbox 与天气等应用也能通过这个方法卸载。

文件资源管理器导航窗格中 OneDrive - Personal 点击无反应

OneDrive 会自动强制更新到最新版,而最新版 OneDrive 有 Bug: 文件资源管理器导航窗格中的 OneDrive - Personal 条目在系统注册表中没有相应的键值定义。

这个问题目前已知在 Windows LTSC 2019, LTSC 2021 两个版本的 LTSC 系统中都存在。

解决办法: 将正常 OneDrive 注册表键值合并到最新版中。

注: 网上有教程说,通过编辑组策略的方式让 OneDrive 更新延期圈的版本而不更新生产圈的版本,以使得 OneDrive 停留在没有 Bug 的版本。这个方法没有用,因为目前已知 OneDrive 22.077.0410 在 LTSC 中没有 Bug,而这个版本即使在延期圈也会被更新到有 Bug 的 22.196.0918.0001 版本。所以,只能靠合并注册表的方式来修复此 Bug。

以下是正常 OneDrive 注册表的键值,将文本保存到 onedrive_repair.reg 文件中双击运行即可:

Windows Registry Editor Version 5.00

; for 64bit OneDrive
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions\52BBA46-E9E1-435f-B3D9-28DAA648C0F6}]
"Attributes"=dword:00000001
"Category"=dword:00000004
"DefinitionFlags"=dword:00000040
"Icon"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
  00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,00,\
  6d,00,61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,\
  00,31,00,30,00,34,00,30,00,00,00
"LocalizedName"=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,\
  6f,00,6f,00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,\
  00,5c,00,53,00,65,00,74,00,74,00,69,00,6e,00,67,00,53,00,79,00,6e,00,63,00,\
  43,00,6f,00,72,00,65,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,31,00,30,00,32,\
  00,34,00,00,00
"LocalRedirectOnly"=dword:00000001
"Name"="OneDrive"
"ParentFolder"="{5E6C858F-0E22-4760-9AFE-EA3317B67173}"
"ParsingName"="shell:::{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
"RelativePath"="OneDrive"

; for 32bit OneDrive
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\FolderDescriptions{A52BBA46-E9E1-435f-B3D9-28DAA648C0F6}]
"Attributes"=dword:00000001
"Category"=dword:00000004
"DefinitionFlags"=dword:00000040
"Icon"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
  00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,00,\
  6d,00,61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,\
  00,31,00,30,00,34,00,30,00,00,00
"LocalizedName"=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,\
  6f,00,6f,00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,\
  00,5c,00,53,00,65,00,74,00,74,00,69,00,6e,00,67,00,53,00,79,00,6e,00,63,00,\
  43,00,6f,00,72,00,65,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,31,00,30,00,32,\
  00,34,00,00,00
"LocalRedirectOnly"=dword:00000001
"Name"="OneDrive"
"ParentFolder"="{5E6C858F-0E22-4760-9AFE-EA3317B67173}"
"ParsingName"="shell:::{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
"RelativePath"="OneDrive"

Windows 7/Server2008R2/Server2012R2

windows 2008 R2 断电重启后进入修复模式

在命令提示符使用如下两个命令可以禁止进入修复模式:

bcdedit /set {default} bootstatuspolicy ignoreallfailures
bcdedit /set {current} recoveryenabled No

可以用如下命令恢复其原本的值:

bcdedit /set {default} bootstatuspolicy IgnoreShutdownFailures
bcdedit /set {current} recoveryenabled Yes

如果已经进入修复模式,那么点击命令提示符,执行下列命令即可:

Bootrec /fixmbr
Bootrec /fixboot
bootrec /RebuildBcd

禁用空耗系统资源的定时任务

打开 控制面板 -> 系统和安全 -> 管理工具 -> 计划任务 ,再进入 任务计划程序库 -> Microsoft -> Windows 在中间的窗格中可以看到 AitAgentProgramDataUpdater 两个任务都会收集遥测信息 (就是把系统及程序的相关信息上传到微软)。

显然,用户并不希望微软收集用户的信息。选中这两个计划任务,再在右侧窗格找到 所选项 点击 禁用 这个任务就不会再被触发了。

重建 icon 缓存 (icon 显示异常)

清除 Windows 中的图标缓存后,Windows 会自动重建对应的图标缓存。

把以下指令保存到 .bat 文件后,执行此 .bat 文件以清除图标缓存 (可以多执行几次):

rem 关闭Windows外壳程序explorer
taskkill /f /im explorer.exe
rem 清理系统图标缓存数据库
attrib -h -s -r "%userprofile%\AppData\Local\IconCache.db"
del /f "%userprofile%\AppData\Local\IconCache.db"
attrib /s /d -h -s -r "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\*"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_32.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_96.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_102.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_256.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_1024.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_idx.db"
del /f "%userprofile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_sr.db"
rem 清理 系统托盘记忆的图标
echo y reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams
echo y reg delete "HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v PastIconsStream
rem 重启Windows外壳程序explorer
start explorer

安装 .net 框架时报 时间戳签名和/或证书无法验证或格式错误

下面的用法只适用于 Windows Server 2008R2 SP1 或者 Windows 7 SP1,注意必须安装 SP1 才行。

解决方法是安装下面列出的两个补丁包,注意选对操作系统和架构,Windows 7 和 Server 2008R2 的补丁包是同一个文件:

https://www.catalog.update.microsoft.com/search.aspx?q=kb4474419

https://www.catalog.update.microsoft.com/search.aspx?q=4490628