2025-12-04

Microsoft-Store-error

1. Store初始化失败
	1.1 为何要卸载Edge
	1.2 如何卸载Edge
	1.3 为何删除Edge会影响微软商店
2. 微软商店无法联网
	2.1 解除网络隔离的办法有:
3. CheckNetIsolation解除网络隔离
	3.1 查看帮助:
	3.2 获取包名(-n=)
	3.3 获取包sid(-p=)
4. 添加排除域名(不一定有效)
5. 参考链接


1. Store初始化失败

由于卸载了Edge,打开 Microsoft Store,就会报错,[初始化失败]。
下载Edge浏览器,重新安装即可恢复。

1.1 为何要卸载Edge

Edge默认状态,打开就会一直留在进程列表里,这个可以关闭。
Edge浏览器设置 → 系统和性能 → 系统 → [关闭Edge后继续运行在后台扩展和应用]
这样浏览器可以关闭,但进程里还有7,8个类似WebView的进程,源文件都是 [msedgewebview2.exe], 怎么也关不掉。
由于不使用Edge,服务里相关的更新服务也都禁用了。

1.2 如何卸载Edge

Edge属于系统自带的程序,没有提供卸载项。
没找到正常卸载的办法,只能删除目录。
比如启动进入PE模式,整个删除目录: [C:\Program Files (x86)\Microsoft]

也可在正常运行系统时删除的,打开目录 [C:\Program Files (x86)\Microsoft] ,多次手动框选删除文件。 最后剩下个别无法删除的文件,就是系统正在调用打开的文件。
任务管理器里,关闭包含 [msedgewebview2.exe] 的所有进程。
这时候关闭 [msedgewebview2.exe] 后就无法再重新启动了。然后就可以删除掉整个目录了。
世界清净了... 
如果不使用Edge浏览器, 微软商店等系统自带的应用,可以这样删除Edge。

1.3 为何删除Edge会影响微软商店

系统自带的应用大都属于UWP(通用 Windows 平台),UWP的好处是便于开发人员设计统一通用的界面,不用为不同的设备单独开发设计界面。
大概很多UWP都会调用Edge组件来呈现界面,所以Edge没了,很多UWP应用就没法正常打开了。
解决的办法就是前面提到的,下载Edge浏览器, 重新安装即可恢复。

2. 微软商店无法联网

若系统和网络都正常,微软商店在不使用代理时是可以正常联网的。
但开启了系统代理后,Microsoft Store 会连不上网?
... 这又是UWP的问题 ... 
  • UWP 是微软在 Windows 10 中引入的新概念,由于所有 UWP 应用均运行在被称为 App Container 的虚拟沙箱环境中,其安全性及纯净度远胜于传统的 EXE 应用。
  • 但 App Container 机制同时也阻止了网络流量发送到本机(即 loopback),使大部分网络抓包调试工具无法对 UWP 应用进行流量分析。
  • 同样的,该机制也阻止了 UWP 应用访问 localhost,即使你在系统设置中启用了代理,也无法令 UWP 应用访问本地代理服务器,十分恼人。

2.1 解除网络隔离的办法有:

  1. 系统自带的 CheckNetIsolation 命令行工具可以将 UWP 应用添加到网络隔离排除列表。
  2. 第三方工具 Fiddler
  3. 代理软件附带功能或组件, 比如: EnableLoopback.exe
  4. 代理中添加排除域名(状态:时好时坏): *.outlook.com;*.microsoft.com;*office365.com;
Fiddler下载
Fiddler 是一款适用于 Windows、macOS 和 Linux 的 Web 调试代理工具。 它由 Fiddler Classic 发展而来,如今已成为功能更强大、用途更广泛的产品——Fiddler Everywhere。 Fiddler Everywhere 目前是唯一仍在积极开发并提供专属支持的 HTTPS 调试器版本, 它是一款功能强大的工具,可为开发人员和 QA 专业人员提供以下功能:

补充: 另外还有个开源工具,这个10年前的开源项目,没有编译好的可执行程序,只有源码,需要自己搭环境编译... 

3. CheckNetIsolation解除网络隔离

3.1 查看帮助:

 CheckNetIsolation -?
用法: CheckNetIsolation [Module]
模块列表:
 LoopbackExempt    控制 AppContainer 和程序包系列环回免除,以便于应用程序开发。
 Debug    启动 AppContainer 或程序包系列的网络流量故障排除会话。 生成使用的、未使用的或缺少的t 网络功能以及应用程序生成的网络流量的报告。
 -?    显示此帮助消息。

 CheckNetIsolation LoopbackExempt -?
   CheckNetIsolation LoopbackExempt [operation] [-n=] [-p=]
      操作列表:
 -a    将 AppContainer 或包系列添加到环回免除列表。[-n=] [-p=]
 -d    将 AppContainer 或包系列从环回免除列表中删除。[-n=] [-p=]
 -c    清除环回免除 AppContainers 和包系列的列表。
 -s    显示环回免除的 AppContainers 和包系列列表。
 -is    启用 AppContainer 或包系列以接收入站连接。

      参数列表
 -n=   AppContainer 名称或包系列名称。
 -p=   AppContainer 或包系列安全标识符 (SID)。
 -?    显示 LoopbackExempt 模块的此帮助消息。

查看排除列表: 
 CheckNetIsolation LoopbackExempt -s
列出环回免除的 AppContainer
[1] -----------------------------------------------------------------
    名称: microsoft.windowsstore_8wekyb3d8bbwe
    SID:  S-1-15-2-1609473798-1231923017-684268153-4268514328-882773646-2760585773-1760938157
[2] -----------------------------------------------------------------
    名称: Microsoft.AccountsControl_cw5n1h2txyewy
    SID:  S-1-15-2-969871995-3242822759-583047763-1618006129-3578262429-3647035748-2471858633

注:排除列表初始状态为空,以上2个排除项 (store联网和账户登录) 是后添加的。
使用包名称(-n=), 或者包sid(-p=)即可将 指定的 UWP 应用添加到网络隔离排除列表中

3.2 获取包名(-n=)

列出包数量
get-appxpackage | find /c "Name              :"

列出包含发行方的包名称
get-appxpackage | find  "PackageFamilyName :"

列出名称中包含“store”的所有应用。 
 get-appxpackage |select-string -pattern "store"
Microsoft.StorePurchaseApp_22408.1400.1.0_x64__8wekyb3d8bbwe
Microsoft.WindowsStore_22510.1401.2.0_x64__8wekyb3d8bbwe
Microsoft.Services.Store.Engagement_10.0.23012.0_x64__8wekyb3d8bbwe
Microsoft.Services.Store.Engagement_10.0.23012.0_x86__8wekyb3d8bbwe

查看包信息
 get-appxpackage Microsoft.WindowsStore
Name              : Microsoft.WindowsStore
PackageFullName   : Microsoft.WindowsStore_22510.1401.2.0_x64__8wekyb3d8bbwe
PackageFamilyName : Microsoft.WindowsStore_8wekyb3d8bbwe

添加排除项目
 CheckNetIsolation LoopbackExempt -a  -n="Microsoft.WindowsStore_8wekyb3d8bbwe"

删除排除项目
 CheckNetIsolation LoopbackExempt -d  -n="Microsoft.WindowsStore_8wekyb3d8bbwe"

3.3 获取包sid(-p=)

注册表这里可以看到所有SID,就是 -p= 的值
计算机\HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings
定位到 [Mappings\] 后,Ctrl + F,通过关键字查找。 比如找“WindowsStore”
S-1-15-2-1609473798-1231923017-684268153-4268514328-882773646-2760585773-1760938157

添加排除项目
 CheckNetIsolation LoopbackExempt -a  -p=S-1-15-2-1609473798-1231923017-684268153-4268514328-882773646-2760585773-1760938157

查看排除列表: 
 CheckNetIsolation LoopbackExempt -s
列出环回免除的 AppContainer
[1] -----------------------------------------------------------------
    名称: microsoft.windowsstore_8wekyb3d8bbwe
    SID:  S-1-15-2-1609473798-1231923017-684268153-4268514328-882773646-2760585773-1760938157
[2] -----------------------------------------------------------------
    名称: Microsoft.AccountsControl_cw5n1h2txyewy
    SID:  S-1-15-2-969871995-3242822759-583047763-1618006129-3578262429-3647035748-2471858633

添加好这2个必要项,微软商店即可正常联网并登录账号。

4. 添加排除域名(不一定有效)

代理中添加排除域名: *.outlook.com;*.microsoft.com;*office365.com;
更新: 这个方法有时有效。有时无效,无效时并不会显示连不上网的提示,而是什么都不显示... 

清除环回免除 AppContainers 和包系列的列表。
 CheckNetIsolation LoopbackExempt -c
确认列表为空
 CheckNetIsolation LoopbackExempt -s

代理服务器设置,手动设置代理,编辑
默认通常为: 
Localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*
在其后添加微软相关域名地址:
;*.outlook.com;*.microsoft.com;*office365.com

这种方法对其他UWP应用也应该有效,只要找到正确的链接域名。

5. 参考链接


UWP
UWP 是 通用 Windows 平台,UWP 已不再处于积极开发状态。
UWP 旨在让开发者为不同 Windows 设备 (PC、平板电脑、手机、Xbox) 等开发一个应用版本。 UWP 通过 Microsoft Store 分发,并允许应用程序在各种 Windows 设备上自动调整以适应不同的硬件和屏幕。 
请注意,仍支持 UWP,但开发 Windows 应用的首选方法是使用 WinUI 和 Windows 应用 SDK。 另一个选项是 WPF。 

开发 Windows 桌面应用

WinUI 的设置和工具

Windows 应用 SDK

教程:使用 .NET 创建新的 WPF 应用

2025-11-22

Chrome-Gemini-Nano

1. Chrome-Weights.bin
	1.1 停用删除
	1.2 转移目录
2. 尝试失败记录2025
	2.1 在 Chrome 中启用 AI
	2.2 Next.js Chrome AI 聊天机器人
	2.3 Chrome插件
3. 相关帮助
	3.1 内置 AI 帮助
	3.2 Chrome AI 功能故障排除
4. 更多相关主题
	4.1 templates模板
	4.2 demo演示
	4.3 Gemini-api

 Chrome-Gemini-Nano

1. Chrome-Weights.bin

OptGuideOnDeviceModel文件夹: C:\Users\Tom\AppData\Local\Google\Chrome\User Data\OptGuideOnDeviceModel\2025.8.21.1028 
OptGuideOnDeviceModel 文件夹(通常包含一个很大的weights.bin 文件)
  • 是Chrome 浏览器内置的Gemini Nano AI 模型, 名为Gemini Nano,用于支持“Prompt API”等实验性功能。 
  • 它包含Chrome的优化指南功能使用的设备端机器学习模型的已学习参数(权重)。 
  • 该模型帮助Chrome做出本地决策,以优化你的浏览体验(例如,提高页面加载时间,管理资源),而无需将可能敏感的浏览数据发送到服务器进行分析以用于此特定功能。 

1.1 停用删除

若不需要,可以参照下一节,停用相关组件即可。避免这个超大文件占用空间。

1.2 转移目录

Chrome用户数据默认位置如下: 
C:\Users\Tom\AppData\Local\Google\Chrome\User Data
  1. 将 [User Data] 复制到其他分区。比如 F:\ChromeData
  2. 删除C:\Users\Tom\AppData\Local\Google\Chrome\下的目录 [User Data]。
  3. 创建链接
    •   mklink /J "C:\Users\Tom\AppData\Local\Google\Chrome\User Data" "F:\ChromeData"
    • 为 C:\Users\Tom\AppData\Local\Google\Chrome\User Data <<===>> F:\ChromeData 创建的联接
这样,Chrome的用户数据都在F盘,不再占用C盘空间。

2. 尝试失败记录2025

2.1 在 Chrome 中启用 AI

浏览器安装完成后,请确保设置以下标志:
  • chrome://flags/#prompt-api-for-gemini-nano
    • 选择“已启用”
  • chrome://flags/#optimization-guide-on-device-model
    • 选择“启用绕过首选项要求”
  • chrome://flags/#summarization-api-for-gemini-nano
    • 选择“已启用”
  • chrome://components/
    • 点击设备型号优化指南 [Optimization Guide On Device Model] 中的“检查更新”按钮下载该型号的优化指南。 如果您看不到优化指南,请确保您已正确设置上述参数,然后重新启动浏览器并刷新页面。
    • Optimization Guide On Device Model - 版本: 2025.8.21.1028 
  • chrome://settings/help
    • Google Chrome 已是最新版本
    • 版本 142.0.7444.176(正式版本) (64 位) 
  • chrome://on-device-internals/
    • Tools \ 
      • Device performance class: Very Low 
    • Model Status \ 
      • Foundational model state: Ready
      • Model Name: v3Nano
      • Version: 2025.08.14.1358
      • Backend Type: CPU
      • File path: C:\Users\Tom\AppData\Local\Google\Chrome\User Data\OptGuideOnDeviceModel\2025.8.21.1028
      • Folder size: 2,730.3 MiB
    • 模型状态下可以看到模型已经Ready。
完成以上任然收到错误提示:
您的浏览器不受支持。
请将Chrome浏览器更新至127版本或更高版本。 注: 这里的Chrome大概需要开发版。

模型相关源码

2.2 Next.js Chrome AI 聊天机器人

这个聊天机器人演示(来源)使用 Next.js 和Vercel AI SDK,并通过chrome-ai提供程序调用 Chrome 的内置 AI模型(Gemini Nano)。
Gemini Nano的Prompt API在浏览器的window.ai函数中公开。它可以通过Vercel AI SDK的统一API轻松调用。

工作原理
以下代码包含了使用 Chrome AI 和 Vercel AI SDK 进行文本流传输所需的全部内容。
import { streamText } from "ai";
import { chromeai } from "chrome-ai";

const { textStream } = await streamText({
  model: chromeai(),
  prompt: "what is a large language model?",
}); 
chromeai实现了一个底层使用window.ai的Provider 。 

支持的浏览器
请确保您使用的是 Chrome(开发者 / Canary)版本 127 或更高版本。 

必要的实验性标志
浏览器安装完成后,请确保设置以下标志:
chrome://flags
启用相关模块与上一节一致

chrome://components
点击“设备型号优化指南”中的“检查更新”按钮下载该型号。 如果您看不到优化指南,请确保您已正确设置上述参数。 如果仍然看不到优化指南,请在浏览器控制台中运行“await window.ai.assistant.create();”,然后刷新页面。

浏览器控制台(console)
更多工具 → 开发者工具 → 控制台(console)页签
快捷键: F12 或 (Ctrl + Shift + I) → 开发者工具 → 控制台(console)页签

2.3 Chrome插件

Chrome 应用商店 
搜索:Gemini nano ai

Chrome AI - Chrome 内置离线 AI 对话/翻译

概述
在侧边栏(Side panel)里打开 Chrome 内置 Gemini Nano AI,可以离线使用 AI 对话和翻译功能。
使用 Chrome 内置的 Gemini Nano AI 与 AI 进行对话和翻译,支持离线使用。

使用此扩展程序依赖于 Chrome 内置的 Gemini Nano AI,因此 Chrome 版本必须不低于 v138,最新版本已包含此版本。
  1. Download and install Chrome with built-in AI Latest Version.
  2. Go to chrome://flags/#prompt-api-for-gemini-nano and enable the Prompt API for Gemini Nano option.
  3. Go to chrome://flags/#optimization-guide-on-device-model and turn on the Enables optimization guide on device option.
  4. Go to chrome://components/ and check or download the latest version of Optimization Guide On Device Model.

Chrome 内置离线AI 对话/翻译
安装后测试,如下错误提示:
This extension uses Chrome's built-in Translation API and Gemini Nano AI, which requires Chrome version be no lower than v138, which you can get in the Latest Version.

Translation Feature Setup:
  1. Download and install Chrome with built-in AI Latest Version.
  2. Go to (chrome://…) and enable
    1. chrome://flags/#enable-experimental-web-platform-features
    2. chrome://flags/#translation-api
    3. chrome://flags/#language-detection-api
  3. Restart Chrome browser to apply changes.
Chat Feature Setup:
  • Go to (chrome://…) and enable
    • chrome://flags/#prompt-api-for-gemini-nano
    • chrome://flags/#optimization-guide-on-device-model
  • Go to (chrome://…) and check or download the latest version of [Optimization Guide On Device Model].
    • chrome://components/
以上几种工具及插件需要设置的部分基本一致。

3. 相关帮助

3.1 内置 AI 帮助

硬件
  • GPU 或 CPU:内置模型可以使用 GPU 或 CPU 运行。
  • GPU:VRAM 严格大于 4 GB。
  • CPU:16 GB 或更多 RAM,以及 4 个或更多 CPU 核心。
  • 网络:无限流量或不按流量计费的网络连接。
  • 存储空间:包含 Chrome 个人资料的卷上至少有 22 GB 的可用空间。 
随着浏览器更新模型,Gemini Nano 的确切大小可能会有所不同。 如需确定当前大小,请访问:  
  • chrome://on-device-internals/
    • Foundational model state: Ready
    • Model Name: v3Nano
    • Version: 2025.08.14.1358
    • Backend Type: CPU
    • File path: C:\Users\Tom\AppData\Local\Google\Chrome\User Data\OptGuideOnDeviceModel\2025.8.21.1028
    • Folder size: 2,730.3 MiB

3.2 Chrome AI 功能故障排除

4. 更多相关主题

4.1 templates模板

AI应用模板和示例

4.2 demo演示

网络人工智能示例 
Web AI 是一个 TypeScript 库,它允许您直接在 Web 浏览器中运行现代深度学习模型。
您可以轻松地将 AI 功能添加到 Web 应用程序中,而无需复杂的服务器端基础架构。 

特征 Features
  • 便于使用: 用一行代码创建一个模型,用另一行代码获取结果。
  • ONNX 运行时提供支持: Web AI 使用 ONNX Web 运行时环境运行模型,该环境对各种运算符都有丰富的支持。这意味着任何模型都能正常工作。
  • 兼容Hugging Face: Web AI 使用与中心相同的格式的模型配置文件,这使得集成现有模型变得更加容易。
  • 内置缓存: Web AI 使用 localforage 将下载的模型存储在 IndexedDB 中。您可以动态配置缓存大小。
  • Web Worker 支持: 所有繁重的操作 – 模型创建和推理 – 都被卸载到单独的线程中,这样用户界面就不会冻结。

4.3 Gemini-api


2025-11-20

Windows-sfc

1. sfc
	1.1 Syntax
	1.2 Parameters
	1.3 Examples
	1.4 扫描修复
	1.5 CBS.log
	1.6 更多相关链接
2. sfc与DISM
	2.1 主要区别 
	2.2 参考链接
3. chkdsk
	3.1 Parameters
	3.2 HDD-SSD
	3.3 查看 chkdsk 日志

1. sfc

sfc, system file checker, 系统文件检查器.
扫描并验证所有受保护系统文件的完整性,并将错误的版本替换为正确的版本。 

1.1 Syntax

sfc [/scannow] [/verifyonly] [/scanfile=<file>] [/verifyfile=<file>] [/offwindir=<offline windows directory> /offbootdir=<offline boot directory> /offlogfile=<log file path>]

1.2 Parameters

Parameter Description
/scannow 扫描所有保护的系统文件的完整性,并尽可能修复有问题的文件。
/verifyonly 扫描所有保护的系统文件的完整性。不会执行修复操作。
/scanfile <file> 扫描引用的文件的完整性,如果找到问题,则修复文件。指定完整路径 <file>
/verifyfile <file> 验证带有完整路径 <file> 的文件的完整性。不会执行修复操作。
/offwindir <脱机Windows目录> 对于脱机修复,指定脱机 windows 目录的位置
/offbootdir <脱机启动目录> 对于脱机修复,指定脱机启动目录的位置
/offlogfile=<log file path> 对于脱机修复,指定一个用于存储日志文件的非默认位置
/? 在命令提示符下显示帮助。

1.3 Examples

要验证 kernel32.dll 文件,请键入:
sfc /verifyfile=c:\windows\system32\kernel32.dll

若要设置脱机启动目录设置为 D:  且脱机 Windows 目录设置为 D:\Windows 的 kernel32.dll 文件的脱机修复,请键入:
sfc /scanfile=D:\windows\system32\kernel32.dll /offbootdir=D:\ /offwindir=d:\windows
sfc /scanfile=D:\windows\system32\kernel32.dll /offbootdir=D:\ /offwindir=d:\windows /offlogfile=C:\log.txt

sfc /verifyonly
sfc /scannow
sfc /verifyfile=c:\windows\explorer.exe
sfc /verifyfile=c:\windows\regedit.exe
sfc /?
Microsoft (R) Windows (R) Resource Checker 6.0 版

1.4 扫描修复

 > sfc /VERIFYONLY
开始系统扫描。此过程将需要一些时间。
开始系统扫描的验证阶段。
验证 100% 已完成。

Windows 资源保护找到了完整性冲突。
对于联机修复,位于 windir\Logs\CBS\CBS.log 的 CBS 日志文件中有详细信息。
例如 C:\Windows\Logs\CBS\CBS.log。
对于脱机修复,/OFFLOGFILE 标记提供的日志文件中有详细信息。

 > sfc /SCANNOW
开始系统扫描。此过程将需要一些时间。
开始系统扫描的验证阶段。
验证 100% 已完成。

Windows 资源保护找到了损坏文件并成功修复了它们。
对于联机修复,位于 windir\Logs\CBS\CBS.log 的 CBS 日志文件中有详细信息。
例如 C:\Windows\Logs\CBS\CBS.log。
对于脱机修复,/OFFLOGFILE 标记提供的日志文件中有详细信息。

1.5 CBS.log

分析SFC.exe在 Windows 中产生的记录档专案

findstr /c:"[SR]" %windir%\logs\cbs\cbs.log > sfcdetails.txt
FINDSTR: 无法打开 %windir%\logs\cbs\cbs.log

findstr /c:"[SR]" C:\Windows\Logs\CBS\CBS.log > sfcdetails.txt
Sfcdetails.txt档案包含每次在计算机上执行SFC.exe程式时记录的专案。 

C:\Windows\Logs\CBS\CBS.log 文件末尾有类似如下的修复记录。
[Pnp] Corrupt file: C:\WINDOWS\System32\drivers\BthA2dp.sys
[Pnp] Repaired file: C:\WINDOWS\System32\drivers\BthA2dp.sys
[Pnp] Corrupt file: C:\WINDOWS\System32\drivers\BthHfEnum.sys
[Pnp] Repaired file: C:\WINDOWS\System32\drivers\BthHfEnum.sys

1.6 更多相关链接

CBS.log檔案包含某些檔案在您成功在 Windows Server 計算機上執行 SFC 公用程式之後,也不會修復的專案
如何在 Windows 中运行系统文件检查器
系统文件检查器
系统文件检查器的说明(Sfc.exe)
Last updated on 2025/01/15 
/scanonce — 扫描所有系统文件一次。
重启计算机时一次扫描所有受保护的系统文件。  重启计算机时,此命令可能需要访问 Windows 安装源文件。
运行此命令时,SfcScan DWORD 值在以下注册表项中设置为 2:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

/scanboot — 每次系统重新启动时在启动阶段扫描所有系统文件。
每次启动计算机时扫描所有受保护的系统文件。  每次启动计算机时,此命令都可能需要访问 Windows 安装源文件。 
运行此命令时,SfcScan DWORD 值在以下注册表项中设置为 1:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon

/cancel — 取消所有挂起的扫描(例如“/scanboot”修饰符)。

/enable — 启用 Windows 文件保护 (WFP),防止程序修改 Windows 系统文件。

2025 年更新:SFC /scannow 命令修复失败的 9 种解决方案
设置服务为自动启动。 Windows Modules Installer,
sc config trustedinstaller start= auto
net start trustedinstaller 
启用 Windows 模块安装程序后,重启计算机并再次运行 SFC 命令,检查问题是否已解决。 

删除 RebootPending 键
打开文件资源管理器,在 c:\windows\winsxs\ 文件夹中查找 pending.xml 文件。 如果找到,请重命名或删除它。删除后,重启电脑并运行系统文件检查器工具,查看错误是否已解决。
如果删除 pending.xml 文件没有帮助,您可以删除 RebootPending 键以删除待处理的重启信息,并允许您的系统运行系统文件检查器工具。 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RebootPending 
删除之后,重启电脑并再次运行 SFC 命令,检查问题是否已解决。 

2. sfc与DISM

2.1 主要区别

特征 SFC 系统文件检查器
(System File Checker)
DISM 部署映像服务和管理
(Deployment Image Servicing and Management)
主要功能 扫描和修复受损的 Windows 核心系统文件。 修复 Windows 映像和组件存储的完整性。
修复机制 从组件存储(WinSxS)中找到并替换损坏的系统文件。 从本地源或 Windows Update 服务器下载正确的文件来修复组件存储。
适用场景 适用于系统文件损坏导致的问题,如“系统文件保护”检测到问题。 适用于 SFC 无法修复的问题,例如组件存储损坏,更新失败等。
依赖性 不一定需要网络连接,因为它从本地缓存中获取文件。 默认需要网络连接(从微软服务器下载文件),也可以指定本地源。

2.2 参考链接

DISM.exe /Online /Cleanup-image /Restorehealth 
运行 DISM 后,最好重新运行 SFC /scannow 以确保所有问题都已修复。 
sfc /scannow 

系统文件检查是操作系统内置的实用程序,用于检查系统文件是否损坏。 sfc /scannow  命令(系统文件检查)会扫描所有受保护的操作系统文件的完整性,并在可能的情况下将错误、损坏、更改或受损的版本替换为正确的版本。 如果无法修复损坏,则应运行 DISM 来尽可能多地修复错误。
系统文件检查在 Vista 及更高版本中有效。
Dism 可在 Windows 7 及更高版本上运行。
即使 SFC 没有发现任何违规行为,运行 DISM Restorehealth 仍然是个好主意。 
如果您使用的是 Windows 8(或更高版本),无论 SFC 是否发现错误,您都应该运行 DISM! 

3. chkdsk

检查卷的文件系统和文件系统元数据是否存在逻辑和物理错误。  如果不带参数使用, chkdsk 仅显示卷的状态,不会修复任何错误。 如果与 /f、 /r、 /x 或 /b 参数一起使用,则会修复卷上的错误。 

Syntax
chkdsk [<volume>[[<path>]<filename>]] [/f] [/v] [/r] [/x] [/i] [/c] [/l[:<size>]] [/b] [/scan] [/forceofflinefix] [/perf] [/spotfix] [/sdcleanup] [/offlinescanandfix] [/freeorphanedchains] [/markclean] [/?]

3.1 Parameters

Parameter Description
<volume> 指定驱动器号(后跟冒号)、装入点或卷名。
[<path>]<filename> 仅 FAT/FAT32: 指定要检查碎片的文件。
您可以使用通配符 ? 和 * 指定多个文件。
/f 修复了磁盘上的错误。 磁盘必须锁定。
如果 chkdsk 无法锁定驱动器,则会出现一条消息,询问您下次重新启动计算机时是否要检查驱动器。
/v 在 FAT/FAT32 上: 显示磁盘上每个文件的完整路径和名称。
在 NTFS 上: 显示清理消息(如果有)。
/r 查找不良扇区并恢复可读信息。 磁盘必须锁定。 /r 包括 /f 的功能,以及对物理磁盘错误的额外分析。
/x 首先强制该卷卸载(如有必要)。 驱动器的所有打开句柄都失效。 /x 还包括 /f 的功能。
/i 仅用于 NTFS。 对索引条目执行不太严格的检查,从而减少运行 chkdsk 所需的时间。
/c 仅用于 NTFS。 不检查文件夹结构中的周期,从而减少运行 chkdsk 所需的时间。
/l[:<size>] 仅 NTFS: 将日志文件大小更改为指定的 KB 数。
如果未指定大小,则显示当前大小。
/b 仅 NTFS: 重新评估该卷上的坏簇 (隐含 /R)
将卷映像化到新的硬盘驱动器后,请使用此参数。
/scan 仅用于 NTFS。 对卷运行联机扫描。
/forceofflinefix 仅 NTFS: (必须与 "/scan" 一起使用) 跳过所有联机修复;
找到的所有故障都 排队等待脱机修复(即 "chkdsk /spotfix")。
/perf 仅 NTFS: (必须与 "/scan" 一起使用) 使用更多系统资源尽快完成扫描。
这可能会对系统中运行的其他任务的性能造成负面影响。
/spotfix 仅用于 NTFS。 对卷运行现成修复。
/sdcleanup 仅 NTFS: 回收不需要的安全描述符数据 (隐含 /F)。
/offlinescanandfix 对卷运行脱机扫描并修复。
/freeorphanedchains 仅 FAT/FAT32/exFAT: 释放所有孤立的簇链而不恢复其内容。
/markclean 仅 FAT/FAT32/exFAT: 如果未检测到损坏,则将卷标记为干净,即使未指定 /F 也是如此。
/? 在命令提示符下显示帮助。

3.2 HDD-SSD

对 HDD:CHKDSK 主要用于检查和修复文件系统的逻辑错误以及查找物理坏道。
对 SSD:虽然也可以运行 CHKDSK,但 SSD 内置了更高级的磨损均衡和错误纠正功能,通常不需要手动运行 CHKDSK。 CHKDSK 对 SSD 的影响极小,因为其写入操作非常少,对 SSD 的寿命影响可以忽略不计。 

硬盘驱动器 (HDD) 固态硬盘 (SSD)
物理性质 HDD 使用旋转磁盘。 扇区和块从拼盘中物理读取。 物理性质: SSD 以电子方式存储数据,没有移动部件。
chkdsk
运行时
物理磁头必须移动到每个被检查的数据位置,由于机械移动,速度 较慢 。 无寻道时间: 读取任何扇区都同样快;没有机械延迟。
检查 坏扇区 (使用 /r)需要更长的时间,因为检查每个扇区的物理完整性,并在可能的情况下替换坏扇区。 检查 坏扇区 (使用 /r)更快,但仍需要读取 每个扇区。 然而,NAND 闪存的读取 速度 比 HDD 快得多。
对于大型驱动器来说,长时间运行时间并不少见。 将集群标记 为坏 是合乎逻辑的,而不是物理重新映射。
通常,在大容量 HDD 上, /r 或者在 /b 读取每个扇区时花费相当长的时间。 即使没有错误且大部分为空的驱动器,物理读取速度也会使该过程成为瓶颈。 由于 SSD 上的扇区读取速度较快,因此运行 /r 和 /b 参数会更快地完成该过程,因为它的物理构成。

在某些情况下,在大容量 HDD 或 SSD 上, chkdsk 可能会太快地完成其进程。 如果发生这种情况,可能是:
  • 该 chkdsk 实际上并没有扫描驱动器上的每个扇区。
  • 操作系统(OS)卷或其他进程装载为脏或锁定。
  • HDD 可能有读取头失败或其他硬件问题,导致 chkdsk 行为不可预知。
  • 该 chkdsk 仅对文件系统结构执行联机扫描,在启动到 OS 之前未显式运行脱机扫描。
  • 该 chkdsk 实际上并没有扫描驱动器上的每个扇区。
  • SSD 没有太多数据要处理(更多可用空间)。
  • 扫描的 SSD 是没有严重碎片的 NVMe。
  • SSD 可能会有效地内部优化“完全扫描”,从而进一步提高扫描速度。

3.3 查看 chkdsk 日志

有两种方法可用于使用事件查看器和 PowerShell 在 Windows 中检索 chkdsk 日志文件。

Event Viewer
若要使用事件查看器查看日志,请执行以下步骤:
启动 >控制面板>管理工具事件>查看器。
或者,按 Win + R 键调出运行对话框,键入 eventvwr.msc,然后选择 确定。
展开 Windows 日志,>右键单击应用程序>,选择过滤当前日志。
在 “筛选器当前日志 ”窗口中,导航到 “事件源 ”下拉菜单,选择 Chkdsk 和 Wininit。
选择“ 确定 ”以完成对这两个源的筛选。

PowerShell
在 PowerShell 中检索日志时,有两种源类型: chkdsk 和 wininit。 在 PowerShell 中运行以下两个命令之一,以查看最新的 chkdsk 日志: 
  • get-winevent -FilterHashTable @{logname="Application"} | ?{$_.providername -match "chkdsk"} | fl timecreated, message
  • get-winevent -FilterHashTable @{logname="Application"} | ?{$_.providername -match "wininit"} | fl timecreated, message
  • get-winevent -FilterHashTable @{logname="Application"} | ?{$_.providername -match "chkdsk"} | fl timecreated, message | out-file "C:\Users\Administrator\Desktop\Chkdsk_Log.txt"
  • get-winevent -FilterHashTable @{logname="Application"} | ?{$_.providername -match "wininit"} | fl timecreated, message | out-file "C:\Users\Administrator\Desktop\Wininit_Log.txt"
  • 2025-11-18

    Windows-Delivery-Optimization

    1. Dosvc
    2. 传递优化的副作用
    	2.1 关闭传递优化
    	2.2 设置服务失败后的操作
    	2.3 禁用端口7680
    	2.4 删除超大文件
    3. 设置传递优化
    4. 扩展阅读
    	4.1 如何在 Windows 中创建和管理组策略管理模板的中央存储
    	4.2 了解 ADMX 策略
    	4.3 组策略设置参考电子表格
    	4.4 PolicyDefinitions (策略定义)
    	4.5 其他
    

     Windows-Delivery-Optimization

    1. Dosvc

    服务名称:DoSvc; 显示名称:Delivery Optimization;
    Delivery Optimization(传递优化)是一项 Windows 技术,它使用对等(P2P)网络来加速下载 Windows 更新和 Microsoft Store 应用程序的速度。
    它通过允许您的电脑从其他附近的电脑或从 Internet 上的其他来源下载更新,同时也将更新提供给其他电脑,从而减轻 Microsoft 服务器的负担。 

    为 Windows 配置传递优化 (DO)
    传递优化选项
    可以使用组策略 (gpedit) 或 Intune 等 MDM 解决方案配置传递优化。
    • 组策略中的传递优化设置位于“配置\策略\管理模板\Windows 组件\传递优化”下。
    • 在 MDM 中,相同设置处于 .Vendor/MSFT/Policy/Config/DeliveryOptimization/ 下。

    2. 传递优化的副作用

    如前所述,传递优化为减低对Microsoft服务器的压力,使用了P2P技术,让相同的更新文件在用户端互相传递。 就是参与的用户也会分享自己下载的更新和应用。这些文件日积月累会越来越大。
    搜索网上,会有(传递优化占用上百GB磁盘空间)的用户发帖求助。
    本机的超大文件 (content.bin) 约3.5Gb出现在如下目录: 
    C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Microsoft\Windows\DeliveryOptimization\
    关闭传递优化,可以避免传递优化生成的巨大文件。注意:不关闭,这个超大文件也可以删除。

    2.1 关闭传递优化

    转到“设置”>“更新和安全”>“Windows 更新”>“传递优化” 
    不确定这里的设置有没有实际用途... 

    禁用服务:DoSvc
    (services.msc)服务
    打开服务(Delivery Optimization)属性界面,启动类型改为[禁用]。应用时可能会弹出“拒绝访问”。

    (regedit)注册表关闭
    若上面无法禁用服务,可通过注册表关闭
    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc
    Start 当前值为2,设置为4即可。

    2.2 设置服务失败后的操作

    回到服务界面,(DoSvc) Delivery Optimization 的属性页面,可以看到服务已被禁用。
    Delivery Optimization 的属性页面 \ 恢复页签 设置启动失败的后续操作为: 无操作。
    同样,这里若无法应用,提示”拒绝访问”。再回到注册表界面操作
    计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc
    FailureActions,失败动作, 如图将03下2个01改成0即可。

    2.3 禁用端口7680

    传递优化会用到如下端口,可以通过设置防火墙,阻止7680端口。

    2.4 删除超大文件

    本机的超大文件 (content.bin) 约3.5Gb出现在如下目录: 
    C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Microsoft\Windows\DeliveryOptimization\
    关闭传递优化,可以避免传递优化生成的巨大文件。
    不关闭功能,这个超大文件也是可以删除的。只是过段时间又会慢慢变大... 
    若提示错误,可能更新服务正在工作。可以在未更新时操作,比如关闭更新或断开网络等。

    3. 设置传递优化

    您也可以通过组策略编辑器设置此服务,可以搜索 gpedit.msc 来打开它,
    然后转到“计算机配置”>“管理模板”>“Windows 组件”>“传递优化”。

    4. 扩展阅读

    4.1 如何在 Windows 中创建和管理组策略管理模板的中央存储

    4.2 了解 ADMX 策略


    适用于 Windows 11 2025 更新 (25H2) 的管理模板 (.admx)
    Administrative Templates (.admx) for Windows 11 2025 Update (25H2)
    本页面提供适用于 Windows 11 2025 更新 (25H2) 的完整管理模板 (.admx) 集。
    • 下载安装后,默认位置如下: 
      • C:\Program Files (x86)\Microsoft Group Policy\Windows 11 Sep 2025 Update (25H2)\PolicyDefinitions
    • 本机策略定义位置如下: 
      • C:\Windows\PolicyDefinitions

    4.3 组策略设置参考电子表格

    Windows 11 2025 更新 (25H2) 组策略设置参考电子表格
    Group Policy Settings Reference Spreadsheet for Windows 11 2025 Update (25H2)
    此电子表格列出了 Windows 11 2025 更新 (25H2) 附带的管理模板文件中包含的计算机和用户配置策略设置。 您可以在编辑组策略对象时配置这些策略设置。

    4.4 PolicyDefinitions (策略定义)

    PolicyDefinitions (策略定义) 是一个文件夹,它用于存储 Windows 组策略的模板文件(.admx 文件),以便管理员可以在本地或域控制器上通过组策略编辑器(gpedit.msc)管理 Windows 设置。 它并不是一个可以直接“使用”的应用程序,而是操作系统用来管理策略的底层文件存储位置。 

    PolicyDefinitions 的作用
    存储策略模板: 存放的 .admx 文件定义了可在组策略编辑器中配置的所有设置的名称和选项。
    简化管理: 通过将策略设置集中在一个地方,方便管理员进行统一的管理和部署。
    适用于高级管理: 主要用于企业环境,以便集中管理多台电脑的策略配置,例如安全性、系统行为等。 

    如何访问和管理策略定义
    使用组策略编辑器: 在运行窗口中输入 gpedit.msc,即可打开本地组策略编辑器,直接在界面中浏览和修改策略设置,而无需直接操作 PolicyDefinitions 文件夹。
    在域控制器上: 如果是域环境,可以在域控制器上通过组策略管理编辑器(gpmc.msc)进行集中管理。
    手动添加自定义模板: 如果有第三方软件提供的策略模板,可以手动将 .admx 文件复制到  C:\Windows\PolicyDefinitions 文件夹下,然后刷新组策略编辑器即可看到新的策略设置。 

    4.5 其他

    Microsoft Intune 设置目录已更新,以支持新的 Windows 11 版本 25H2 设置

    2025-11-17

    Windows-icacls

    1. icacls-syntax
    2. icacls-parameters
    3. icacls-remarks
    4. Command-line syntax key
    5. icacls-examples
    6. 查看ACL
    	6.1 icacls
    	6.2 Get-Acl
    	6.3 获取注册表项的 ACL
    	6.4 查看文件夹属性
    7. 访问控制列表
    	7.1 ACL
    	7.2 DACL
    	7.3 SACL
    	7.4 ACE
    	7.5 ACE类型
    	7.6 更多相关
    8. ACL检测
    	8.1 文件和注册表检测工具(2015年的小工具)
    	8.2 域环境(2017年参考资料)
    

     Windows-icacls
    使用 ACL(访问控制列表)可以灵活地控制对文件和文件夹的访问权限。
    显示或修改指定文件中的任意访问控制列表 (DACL), 并将存储的 DACL 应用于指定目录中的文件。
    此命令将替换已弃用的 cacls 命令。 

    1. icacls-syntax

    icacls directory [/substitute SidOld SidNew [...]] [/restore aclfile] [/C] [/L] [/Q]
    将存储的 DACL 应用于目录中的文件。

    icacls name [/save aclfile] [/setowner user] [/findsid Sid] [/verify] [/reset] [/T] [/C] [/L] [/Q]

    ICACLS name /save aclfile [/T] [/C] [/L] [/Q]
    将匹配名称的文件和文件夹的 DACL 存储到 aclfile 中 以便将来与 /restore 一起使用。 请注意,未保存 SACL、所有者或完整性标签。

    ICACLS name /setowner user [/T] [/C] [/L] [/Q]
    更改所有匹配名称的所有者。 该选项不会强制更改所有身份;使用 takeown.exe 实用程序可实现该目的。

    ICACLS name /findsid Sid [/T] [/C] [/L] [/Q]
    查找包含显式提及 SID 的 ACL 的所有匹配名称。

    ICACLS name /verify [/T] [/C] [/L] [/Q]
    查找其 ACL 不规范或长度与 ACE 计数不一致的所有文件。

    ICACLS name /reset [/T] [/C] [/L] [/Q]
    为所有匹配文件使用默认继承的 ACL 替换 ACL。

    icacls name [/grant[:r] Sid:perm[...]] [/deny Sid:perm [...]] [/remove[:g|:d]] Sid[...]]] [/setintegritylevel Level:policy[...]] [/T] [/C] [/L] [/Q]

    2. icacls-parameters

    Parameter Description
    <name> 指定要为其显示或修改 DACL 的文件。
    <directory> 指定要显示或修改 DACL 的目录。
    /t 对当前目录及其子目录中的所有指定文件执行该作。
    /c 即使发生文件错误,也会继续该作。 仍然显示错误消息。
    /l 对符号链接执行作,而不是对目标执行。
    /q 禁止显示成功消息。
    /save <ACLfile> 将所有匹配文件的 DACL 存储到访问控制列表 (ACL) 文件中,
    以供稍后使用 /restore。
    /setowner <user> 将所有匹配文件的所有者更改为指定用户。
    /findsid <sid> 查找包含显式提及指定安全标识符 (SID) 的 DACL 的所有匹配文件。
    /verify 查找具有非规范或长度与访问控制项(ACE)计数不一致的所有文件。
    /reset 将 ACL 替换为所有匹配文件的默认继承 ACL。
    /grant[:r] <sid>:<perm> 授予指定的用户访问权限。
    • 如果使用了 :r,这些权限将(替换)以前授予的所有显式权限。
    • 如果不使用 :r,这些权限将(添加)到以前授予的所有显式权限。
    /deny <sid>:<perm> 显式拒绝指定的用户访问权限。
    为有状态权限添加显式拒绝 ACE,并删除任何显式授予中的相同权限。
    /remove: g |d <sid> 从 DACL 中删除指定 SID 的所有匹配项。 此命令还可以使用:
    • g - 删除对指定 SID (授予)的所有权限
    • d - 删除对指定 SID (拒绝)的所有权限
    /setintegritylevel <perm><level> 将完整性 ACE 显式添加到所有匹配的文件。 可以将级别指定为:
    • L[ow]
    • M[edium]
    • H[igh]
    完整性 ACE 的继承选项可以优先于级别,但只应用于目录。
    /substitute <sidold><sidnew> 将现有 SID (sidold) 替换为新 SID (sidnew) 。
    需要使用 <directory> 参数。
    /restore <ACLfile> /c | /l | /q 将存储的 DACL 从 <ACLfile> 应用于指定目录中的文件。
    需要使用 <directory> 参数。
    /inheritancelevel: e |d |r 设置继承级别,可以是:
    • e - 启用继承
    • d - 禁用继承并复制 ACE
    • r - 禁用继承并仅删除继承的 ACE

    3. icacls-remarks

    • SID 可以采用数字或友好名称形式。  如果使用数字形式,将通配符 * 附加到 SID 的开头。
    • 此命令将 ACE 条目的规范顺序保留为:
    1. Explicit denials (显式拒绝)
    2. Explicit grants (显式授予)
    3. Inherited denials (继承拒绝)
    4. Inherited grants (继承授予)
    • 此选项 <perm> 是一个权限掩码,可为基本权限、高级权限或继承权限指定:
      • 一系列简单权限(基本权限),无需使用括号:
        • N - 无法访问
        • F - 完全访问
        • M - 修改访问权限
        • RX - 读取和执行访问
        • R - 只读访问
        • W - 只写访问
        • D - 删除访问权限
      • 必须使用括号的特定权限(高级权限)的逗号分隔列表:
        • DE - 删除
        • RC - 读取控制(读取权限)
        • WDAC - 写入 DAC (更改权限)
        • WO - 写入所有者(获取所有权)
        • S - 同步
        • AS – 访问系统安全性
        • MA - 允许的最大值
        • GR - 通用读取
        • GW - 通用写入
        • GE - 通用执行
        • GA - 通用所有
        • RD - 读取数据/列表目录
        • WD - 写入数据/添加文件
        • AD - 追加数据/添加子目录
        • REA - 读取扩展属性
        • WEA - 写入扩展属性
        • X - 执行/遍历
        • DC - 删除子项
        • RA - 读取属性
        • WA - 写入属性
      • 必须使用括号的继承权限序列, 继承权限可以优先于每种格式, 但只应用于目录:
        • (I) - 继承。 ACE 继承自父容器。
        • (OI) - 对象继承。 此容器中的对象继承此 ACE。 仅适用于目录。
        • (CI) - 容器继承。 此父容器中的容器继承此 ACE。 仅适用于目录。
        • (IO) - 仅继承。 ACE 继承自父容器,但不适用于对象本身。 仅适用于目录。
        • (NP) - 不传播继承。ACE 由容器和对象从父容器继承,但不会传播到嵌套容器。仅适用于目录。

    4. Command-line syntax key

    下表描述了用于指示命令行语法的表示法。 
    Notation Description
    不带括号或大括号的文本 必须按如下所示键入的项目。
    <Text inside angle brackets> 必须为其提供值的占位符。
    [Text inside square brackets] Optional items. 可选项目。
    {Text inside braces} 所需项集。必须选择一个。
    垂直条 (|) Vertical bar 互斥项的分隔符。 必须选择一个。
    省略号 (…) Ellipsis 可重复和多次使用的项。

    5. icacls-examples

    若要将 C:\Windows 目录中的所有文件的 DACL 及其子目录保存到 ACLFile 文件,请键入:
    icacls c:\windows\* /save AclFile /T

    若要为 C:\Windows 目录及其子目录中存在的 ACLFile 中的每个文件还原 DACL,请键入:
    icacls c:\windows\ /restore AclFile

    若要向用户授予对名为 Test1 的文件的 Delete 和 Write DAC 权限,请键入:
    icacls test1 /grant User1:(d,wdac)
    icacls test1 /grant Administrator:(D,WDAC)

    若要向 SID S-1-1-0 定义的用户授予对名为 TestFile 的文件的删除和写入 DAC 权限,请键入:
    icacls TestFile /grant *S-1-1-0:(d,wdac)

    要将 (高) 完整性级别应用于目录并确保其文件和子目录都继承此级别,请键入:
    icacls "myDirectory" /setintegritylevel (CI)(OI)H

     > icacls /?

    6. 查看ACL

    6.1 icacls

     > icacls c:\windows\winsxs
    c:\windows\winsxs NT SERVICE\TrustedInstaller:(OI)(CI)(F)
     BUILTIN\Administrators:(RX)
     BUILTIN\Administrators:(OI)(CI)(IO)(GR,GE)
     NT AUTHORITY\SYSTEM:(RX)
     NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(GR,GE)
     BUILTIN\Users:(RX)
     BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
     APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(RX)
     APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(OI)(CI)(IO)(GR,GE)
     APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包:(RX)
     APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包:(OI)(CI)(IO)(GR,GE)
    已成功处理 1 个文件; 处理 0 个文件时失败

    如果问题是由 WinSxS 文件夹的权限不正确引起的, 您可以使用 icacls.exe 查看、修改、备份和还原 ACL(访问控制列表)。 
    “WinSxS”文件夹位于“c:\windows\winsxs”。 它包含多个文件,包括Windows更新服务包和安全补丁,以及来自过去更新的文件。

    6.2 Get-Acl

    获取资源(如文件或注册表项)的安全描述符。 
     > Get-Acl c:\windows\winsxs | Format-List
    Path   : Microsoft.PowerShell.Core\FileSystem::C:\windows\winsxs
    Owner  : NT SERVICE\TrustedInstaller
    Group  : NT SERVICE\TrustedInstaller
    Access : NT AUTHORITY\SYSTEM Allow  -1610612736
             NT AUTHORITY\SYSTEM Allow  ReadAndExecute, Synchronize
             BUILTIN\Administrators Allow  -1610612736
             BUILTIN\Administrators Allow  ReadAndExecute, Synchronize
             BUILTIN\Users Allow  -1610612736
             BUILTIN\Users Allow  ReadAndExecute, Synchronize
             NT SERVICE\TrustedInstaller Allow  FullControl
             APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES Allow  ReadAndExecute, Synchronize
             APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES Allow  -1610612736
             APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包 Allow  ReadAndExecute, Synchronize
             APPLICATION PACKAGE AUTHORITY\所有受限制的应用程序包 Allow  -1610612736
    Audit  :
    Sddl   : …

     > Get-Acl -Path c:\windows\winsxs | Format-Table -wrap

     > $ac2 = Get-Acl -Path c:\windows\winsxs
     > $ac2.Access
     > $ac2.Access | Format-Table -wrap

    6.3 获取注册表项的 ACL

    此示例使用 Get-Acl cmdlet 获取注册表的控制子项(HKLM:\SYSTEM\CurrentControlSet\Control)的安全描述符。 
     > Get-Acl -Path HKLM:\System\CurrentControlSet\Control | Format-List
    Path   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control
    Owner  : BUILTIN\Administrators
    Group  : NT AUTHORITY\SYSTEM
    Access : BUILTIN\Administrators Allow  FullControl
             BUILTIN\Users Allow  ReadKey
             BUILTIN\Administrators Allow  FullControl
             NT AUTHORITY\SYSTEM Allow  FullControl
             CREATOR OWNER Allow  FullControl
             APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES Allow  ReadKey
             S-1-15-3-1024-… Allow  Re
             adKey
    Audit  :
    Sddl   : O:BAG:SYD:(A;;KA;;;BA)(A;CIID;KR;;;BU)(A;CIID;KA;;;BA)(A;CIID;KA;;;SY) (A;CIIOID;KA;;;CO)(A;CIID;KR;;;AC)(A;CIID;KR;;;S-1-15-3-1024-… )

     > $acl = Get-Acl -Path 'HKLM:\SAM'
     > $acl.Access
     > $acl.Access | Format-Table -wrap

    Set-Acl
    更改指定项(如文件或注册表项)的安全描述符。 

    6.4 查看文件夹属性

    文件夹属性 → 安全 → 高级 … 

    7. 访问控制列表

    7.1 ACL

    Access control lists
    • ACL:Access Control List (访问控制列表)。用来表示用户(组)权限的列表,包含两种类型:DACL 和 SACL。
    • DACL:Discretionary Access Control List (自由访问控制列表)。安全对象权限的列表, 主要负责定义谁可以访问对象。
    • SACL:System Access Control List (系统访问控制列表)。用来记录对安全对象访问的日志.
    • ACE:Access Control Entry (访问控制条目)。ACL中的元素.

    7.2 DACL

    自由访问控制列表(DACL)标识允许或拒绝访问安全对象的受托人。
    当 进程 尝试访问安全对象时,系统将检查对象的 DACL 中的 ACE,以确定是否向其授予访问权限。
    • 如果没有DACL,系统将允许访问
    • 如果存在DACL,但没有ACE,系统将拒绝所有访问
    • 如果存在DACL,也存在ACE,那么会按照每个ACE指定允许或拒绝
    有关详细信息,请参阅 DACL 如何控制对对象的访问。
    有关如何正确创建 DACL 的信息,请参阅 创建 DACL。

    7.3 SACL

    系统访问控制列表(SACL)允许管理员记录访问安全对象的尝试。
    每个 ACE 指定指定的受托人尝试的访问尝试类型,这些尝试导致系统在安全事件日志中生成记录。
    SACL 中的 ACE 可以在访问尝试失败、成功或两者兼有时生成审核记录。
    有关 SCL 的详细信息,请参阅 审核生成 和 SACL 访问权限。

    7.4 ACE

    (ACE) 访问控制列表 (ACL) 中的条目。 ACE 包含一组访问权限和安全标识符 (SID),用于标识允许、拒绝或审核其权限的受托方。 

    访问控制项数量
    ACE 的类型
    有六种类型的 ACE,其中三种受所有安全对象支持。 其他三种类型 目录服务对象支持的特定于对象的 ACE。
    目录服务 (DS) 对象支持特定于对象的 ACE。 特定于对象的 ACE 包含一对 GUID,这些 GUID 扩展了 ACE 可以保护对象的方式。

    所有类型的 ACE 都包含以下访问控制信息:
    • 安全标识符(SID),用于标识 ACE 适用的 受托人。
    • 访问掩码,指定 ACE 控制的 访问权限。
    • 指示 ACE 类型的标志。
    • 一组位标志,用于确定子容器或对象是否可以从 ACL 附加到的主对象继承 ACE。

    7.5 ACE类型


    类型 D/S 描述
    安全对象
    支持的 ACE
    访问被拒绝的 ACE DACL 拒绝 对受托人的访问权限。
    访问允许的 ACE DACL 允许 对受托人的访问权限。
    系统审核 ACE SACL 用于在受托方尝试行使指定访问权限时生成审核记录。
    特定于对象
    的 ACE
    访问被拒绝的 ACE DACL 拒绝 对对象上设置的属性或属性的受托人访问权限,
    或将 ACE 继承限制为指定类型的子对象。
    使用 ACCESS_DENIED_OBJECT_ACE 结构。
    访问允许的 ACE DACL 允许 受托方访问对象上设置的属性或属性,
    或将 ACE 继承限制为指定类型的子对象。
    使用 ACCESS_ALLOWED_OBJECT_ACE 结构。
    系统审核 ACE SACL 用于记录受托人访问对象上设置的属性或属性的尝试,
    或将 ACE 继承限制为指定类型的子对象。
    使用 SYSTEM_AUDIT_OBJECT_ACE 结构。

    7.6 更多相关

    使用 ACL
    请勿尝试直接处理 ACL 的内容。
    若要确保 ACL 在语义上正确,请使用相应的函数来创建和作 ACL。
    有关详细信息,请参阅 从 ACL 获取信息,并 创建或修改 ACL。

    DACL 和 ACE
    AccessCheck 的工作原理

    8. ACL检测

    本文介绍了Windows系统中的ACL在文件、注册表和域环境下后门利用方面的技巧,并给出检测后门的建议。 详细信息请看如下原文链接: 

    8.1 文件和注册表检测工具(2015年的小工具)

    可借助开源工具WindowsDACLEnumProject:
    能够列出存在风险的ACL。(最新版本为10年前的2015年。但下载后仍然能用)

    运行可能提示找不到 MSVCR100.dll 文件。
    MSVCR100.dll 是Visual Studio 2010(Visual C++ 2010)的一个动态链接库。 可以单独下载这个dll文件放在同一目录下即可。
    下载最新版即可。(10.0.40219.473). Zip文件大小: 0.4 MB 
    在命令行下运行,可以看到扫描过程。
    • ServicePerms64.exe (18kb)
    • RegisteryPerms64.exe (15kb)
      • 需要下载: msvcr100.dll (64位版) (812kb),下载后放在同一目录下即可。
    • WinStationsAndDesktopPerms32.exe (12kb)
    • FileSystemPerms32.exe (13kb)
      • 需要下载: msvcr100.dll (32位版) (757kb),下载后放在同一目录下即可。
    • ProcessPerms32.exe (145kb)
      • 可以独立运行,比如: processperms -px

    8.2 域环境(2017年参考资料)

    需要开启高级安全审核策略,参考资料:
    开启策略后,Event ID 5136会记录域环境中ACL的修改,参考资料:

    Microsoft-Store-error

    导航 (返回顶部) 1. Store初始化失败 1.1 为何要卸载Edge 1.2 如何卸载Edge 1.3 为何删除Edge会影响微软商店 2. 微软商店无法联网 2.1 解除网络隔离的办法有: 3. CheckNetIsolation解除网络隔离 3.1 查...