“Windows”标签的文章
带有“Windows”标签的文章共 116 篇,按发布日期从新到旧排列。
-
Windows 虚拟化的深层(第3回) ── 数秒启动的虚拟机:WSL2、Windows Sandbox 与容器为何这么轻
WSL2 和 Windows Sandbox 为何数秒启动、用起来这么轻?本文从动态基础映像、直接映射、动态内存分配讲到 Hyper-V 隔离容器,讲解其机制。
-
Windows 虚拟化的深层(第2回) ── 连内核也看不见的内存:VBS、HVCI 与 Credential Guard 的机制
在兼容硬件上全新安装时,VBS 默认启用,并用虚拟机监控程序与 SLAT 创建比内核更强的隔离。本文讲解 VTL、安全内核、HVCI 与 Credential Guard 的结构。
-
Windows 虚拟化的深层(第1回) ── 你的 Windows 实际在哪里运行:虚拟机监控程序与分区
启用 Hyper-V 后,主机 Windows 自身作为根分区运行在虚拟机监控程序之上。本文通过 VT-x、SLAT 与 VMBus 的角色讲解虚拟化的基础。
-
Win32 线程池 API ── 用 CreateThreadpoolWork 实现不自建线程的并发
原生代码里是否到处调用 CreateThread?本文根据一手资料讲解 Vista 重新设计的 Win32 线程池 API——work、timer、wait、io 四种对象、清理组,以及回调中禁止做的事。
-
命名管道实务 ── 从设计到安全的 Windows 标准 IPC
以实务视角讲解 Windows 标准进程间通信——命名管道。根据一手资料整理字节模式与消息模式的选择、同时处理多客户端的服务器设计、ACL 与模拟的安全性,以及 .NET 的命名管道流。
-
从睡眠恢复后损坏的应用 ── Windows 电源事件机制与扛得住恢复的业务应用
打开笔记本后业务应用的连接全断了——原因是设计从未考虑睡眠。本文根据一手资料整理 WM_POWERBROADCAST 通知流程、Modern Standby 行为、断开/重连设计、睡眠抑制与调查命令。
-
DllMain 与加载器锁 ── 「DLL 初始化里什么都别做」的真正原因
为何不得从 DllMain 调用 LoadLibrary 或与其他线程同步。本文根据一手资料说明加载器锁如何串行化每一条 DLL 通知、结构上必然死锁的经典场景、推迟初始化的正确设计,以及如何调查挂起。
-
「无响应」的真正含义 ── Windows 如何判定应用已挂起,以及如何设计不挂起的应用
Windows 的「无响应」是操作系统判定窗口已 5 秒未取出消息并换成幽灵窗口的机制。本文说明该判定的内部、挂起的经典原因、把重活移出 UI 线程的设计,以及调查挂起的步骤。
-
虚假唤醒 ── 条件变量为何会「未被通知就醒来」,以及在 Windows 上正确等待的方法
条件变量的等待即使没有通知到达也可能返回(虚假唤醒)。本文从 Windows 实现说明规格为何允许这一点,并给出用 while 循环和谓词在 Win32、C++ 和 C# 中正确等待的写法。
-
剪贴板与拖放如何工作 ── 在业务应用中正确处理 OLE 数据传输
粘贴 Excel 表格时格式散架;关闭源应用后就再也贴不上——两者都来自剪贴板把同一内容同时放成多种格式。本文说明标准格式、延迟渲染、OLE 拖放,以及管辖剪贴板历史和云同步的策略。
-
WPR/WPA 实务 ── 从系统整体调查「整台 PC 变慢」
任务管理器追不到的「整台 PC 变慢」「开机很慢」,可用 WPR/WPA 采集整个 OS 的 ETW 追踪再读。本文说明 wpr.exe 采集步骤,以及在 WPA 里怎么读 CPU、等待与磁盘 I/O。
-
从应用看到的 Windows 关机 ── 正确扛住退出通知、重启与断电
夜间 Windows Update 重启把测量数据弄坏——这种事故可用设计避免。本文依一次信息整理 WM_QUERYENDSESSION 与 PRESHUTDOWN 等结束通知的接法、几秒内做完收尾,以及断电也不留下半截文件的写法。
-
Windows 应用无障碍入门 ── 为 UI Automation 与合理便利做准备
在 2024 年 4 月施行的日本残障者歧视消除法修正背景下,本文以屏幕阅读器读取 Windows 应用的机制 UI Automation 为中心,从实务整理 WinForms/WPF 的命名、键盘操作、对比与验证工具。
-
日文字体与字符的陷阱 ── 业务应用里的 JIS2004、IVS、外字
「葛这个字在画面与列印表单看起来不一样。」「人名里的某个字显示不出来。」业务系统的字符麻烦,一旦把字符码(数据)层与字体(外观)层分开,就能处理。本文整理 JIS2004 字形变更、异体字选择器与外字(EUDC)的实务对应。
-
从组策略到 Intune ── 中小企业的设备管理迁移指南
AD 服务器到了该换的时候,该继续用组策略,还是改走 Entra ID 加 Intune?本文为中小企业整理两者套用方式的差异、许可、用 Group Policy analytics 盘点、五阶段迁移情境,以及容易踩的坑。
-
Windows 服务帐户选定 ── LocalSystem、虚拟帐户与 gMSA
您是否仍以 LocalSystem 运行 Windows 服务?本文用判断表比较 LocalService、NetworkService、虚拟帐户、域用户与 gMSA 的权限和网络身份,说明如何以最小权限运营。
-
OneDrive「按需文件」与业务应用 ── 占位符打破的前提与对策
桌面 CSV 打不开、导入以「找不到文件」失败,原因可能是 OneDrive 的已知文件夹搬移与按需文件。本文说明占位符的运作、如何用属性判断状态,以及应用与 IT 各自能做的事。
-
Windows 应用程序兼容如何运作 ── 用兼容模式、Shim 与 Compatibility Administrator 延续旧应用
为什么勾选兼容模式后旧应用又会启动。本文说明 Shim(API 拦截)的机制、代表性 Shim 的作用、用 Compatibility Administrator 与 sdbinst 部署的方法、失效界限,以及续命与迁移的判断。
-
Windows 内存的深层(第3回)── 节对象与写时复制:DLL 与文件映射的真面目
把节对象、映像与数据映射、共享缓存、写时复制串起来,说明 DLL 与共享内存如何共享物理页。
-
今日的 Windows 外壳集成 ── 上下文菜单、文件关联,以及 Windows 11 改了什么
说明 Windows 11 上下文菜单为何藏到「显示更多选项」后面,从扩展名→ProgID→verb 关联基础、传统外壳扩展注意事项,到 IExplorerCommand 与 MSIX/sparse package 路径。
-
企业内部代理与 Windows 应用 ── 理清 WinINET、WinHTTP、.NET 的代理解析
浏览器能连上,只有业务应用过不了企业内部代理。原因多半是 WinINET、WinHTTP、环境变量与 .NET 各自读取的代理设置不一致。本文整理 PAC 与 WPAD、认证代理、TLS 检查与隔离步骤。
-
Windows 内存的深层(第2回) ── 物理页的一生:五份列表与页面文件的真相
把 PFN 数据库、Standby、Modified、内存压缩和页面文件串起来,说明物理页离开 Working Set 之后会去哪里。
-
Windows 数据包捕获实务 — pktmon、netsh trace、Wireshark 怎么选
应用程序日志只留下「超时」的通信故障,往下一层看实际走过线路的数据包就能调查。即使服务器不能安装 Wireshark,也能用内置的 pktmon 与 netsh trace 捕获。本文整理捕获与分析分开的现场作法。
-
Windows 内存的深层(第1回) ── 虚拟地址变成物理 RAM 的瞬间:页错误从头到尾
把 VirtualAlloc、VAD、页表、TLB、demand-zero 与硬错误串起来,说明虚拟地址被赋予物理 RAM 的那一瞬间。
-
解读 Windows 错误码 ── Win32、HRESULT、NTSTATUS 三层结构
出现 0x80004005 时,先分解再搜索。本文整理 Win32 错误、HRESULT、NTSTATUS 的三层结构、0x8007xxxx 是包起来的 Win32 错误这个最重要模式,以及用 err.exe 与 PowerShell 查询的方法。
-
Windows的「内存使用量」究竟表示什么 ── 正确解读 Working Set・Private Bytes・Commit・页面文件
任务管理器中的内存、Working Set、Private Bytes、Commit并不是同一个值。本文讲解Windows虚拟内存与物理内存的关系、页面文件的作用,以及在排查内存不足或泄漏时应该关注的指标。
-
多线程实务最佳实践 C 语言篇 ── 以 Win32 API 的方式安全编写
C 语言 × Win32 的多线程有其定式:用 _beginthreadex 创建线程、SRW 锁与条件变量、Interlocked、以停止事件 + WaitForMultipleObjects 设计停止流程。本文还将梳理 TerminateThread 的危险性与 DllMain 的限制。
-
多线程实务最佳实践 C++ 篇 ── 用 RAII 和 jthread 从结构上消除事故
C++ 的多线程是数据竞争会变成未定义行为的世界。本文梳理 std::thread 析构函数的陷阱、jthread 与 stop_token 的停止设计、scoped_lock 的死锁规避、atomic 的正确定位,直至与 Win32 同步 API 的使用区分。
-
多线程实务最佳实践 .NET 篇 ── 在增加线程之前应先确定的事
针对 .NET/C# 整理「立了线程之后,偶尔崩溃・卡死」的防范设计准则。内容涵盖不自行创建线程而改用 Task、减少共享可变状态、锁的纪律、基于 CancellationToken 的停止设计,直至 UI 线程的处理方式。
-
卷影复制服务(VSS)的原理与实务 ── 使用中文件为何能够备份
使用中的文件明明会因共享冲突而无法复制,备份软件为什么却能正常备份?本文将解说卷影复制服务(VSS)中请求者・编写器・提供程序的角色分工、写时复制的原理、vssadmin 的实务操作,以及差异区域的陷阱。
-
在 C# / PowerShell 中使用 WMI/CIM ── 硬件信息获取・进程监控・远程查询实务指南
获取电脑序列号、监控磁盘剩余空间、检测进程启动,这些场景的经典方案就是 WMI/CIM。本文讲解 Get-CimInstance 等 CIM cmdlet 的用法与从旧版 Get-WmiObject 的迁移、C# 中 System.Management 与 CIM API 的使用区分,以及实用范例与常见陷阱。
-
组策略(GPO)实务入门 ── 原理、生效确认与和 Intune 的分工
还没搞清楚「用 GPO 配发」到底是什么意思,就在操作 AD 环境吗?本文从实务角度整理组策略的原理与 LSDOU 应用顺序、用 gpupdate、gpresult 确认生效情况、与 Intune 的分工,以及客户方 GPO 改变应用行为的陷阱。
-
Windows 安全审核策略与事件日志排查实务 ── 成为看得懂 4625 的信息系统人员
这是一份用于应对「帮忙查一下登录失败日志」需求的实务指南。内容涵盖基本审核策略与高级审核策略的关系、至少应启用的子类别、事件 ID 4624/4625/4688 的解读方法、Security 日志的容量设计,直至用 Get-WinEvent 提取日志。
-
Windows LAPS实务指南 ── 告别全部PC通用的本地管理员密码
全部PC通用的本地管理员密码,是「一台被攻破、全部沦陷」的Pass-the-Hash攻击温床。本文讲解已成为OS标准功能的Windows LAPS如何自动轮换密码、如何配置保存到AD/Entra ID,以及运维中的常见陷阱。
-
Windows证书存储实务指南 ── 应该放入用户存储还是计算机存储
客户端证书究竟应该放入用户存储还是计算机存储?本文从 certmgr.msc 与 certlm.msc 的区别、私钥的权限授予,到 PowerShell 的到期日盘点,系统性地梳理证书相关的常见事故与对策,是一份实务指南。
-
Windows 防火墙与业务应用 ── 入站规则要通过安装程序注册
「开发机上正常运行,但在客户现场却无法通信」的常见原因就是 Windows 防火墙。本文讲解入站默认阻止与网络配置文件、不能把生产环境交给通知对话框处理的原因,以及通过安装程序注册入站规则的方法与排查步骤。
-
BitLocker实务指南 ── 从恢复密钥管理入手的驱动器加密
Windows 11 24H2 以后,全新安装时「设备加密」默认启用,「不知不觉就被加密了」的事故正在真实发生。本文以恢复密钥保存位置判断表为核心,梳理其原理、组织内的运维、事故应对直至报废处置。
-
Windows I/O 的深层(第6回·最终回) ── 过滤器驱动程序与迷你过滤器:Procmon 与病毒扫描为何能够介入 I/O
本文是通过图解讲解 Windows 过滤器驱动程序与迷你过滤器的系列最终回。整理过滤器管理器与高度、pre/post 回调、Procmon 与杀毒软件能够检查全部 I/O 的机制,直至「唯独那个环境很慢」的排查步骤。
-
Windows I/O 的深层(第5回) ── NTFS 的内部结构:从 MFT 理解文件系统
本文是通过图解讲解 NTFS 内部结构的系列第 5 回。从开发者视角整理 MFT 与文件记录、多数据流(Zone.Identifier)、硬链接与 8.3 短文件名、重解析点、两种日志,直至稀疏与压缩等内容。
-
Windows I/O 的深层(第4回) ── 缓存管理器:你的 WriteFile 何时才能到达磁盘
本文是图解 Windows I/O 系列的第 4 回,讲解缓存管理器:以文件映射方式实现的缓存、先读与延迟写入、FlushFileBuffers 与 FILE_FLAG_NO_BUFFERING 的使用场景划分,直至断电导致数据丢失的条件。
-
Windows I/O 的深层(第3回) ── I/O 完成端口(IOCP)与 .NET 线程池:async/await 的地下室
本文是通过图解讲解 I/O 完成端口(IOCP)的系列第 3 回。整理了将完成队列与线程数控制融为一体的设计、并发值与 LIFO 释放,直至 .NET 线程池与 async/await 续体的执行线程等内容。
-
MSMQ 能用到什么时候 ── 「连弃用都算不上」的遗留队列迁移判断
MSMQ 并未列入官方弃用清单,但 System.Messaging 只存在于 .NET Framework,成为迁移到 .NET 的障碍。本文用事实梳理「已废止」传闻与实际现状,整理继续使用还是迁移的判断标准,以及迁移目标的选择方法。
-
Windows I/O 的深层(第2回) ── 同步 I/O 与异步 I/O:OVERLAPPED 的真正含义
本文是通过图解讲解 Windows 同步 I/O 与异步 I/O(重叠 I/O)的系列第 2 回。整理 FILE_FLAG_OVERLAPPED 的含义、完成通知的四种方式、明明是异步却同步完成的条件、取消的正确做法,以及与 .NET 的对应关系。
-
AppLocker・App Control for Business(WDAC)与业务应用分发 ── 在被「执行控制」拦截之前
整理 AppLocker、App Control for Business(原 WDAC)、Smart App Control 三者的区别,以及为了不让自家业务应用在客户环境的执行控制下被拦截,开发与分发方应采取的对策。同时汇总被拦截时事件日志的读取方法。
-
Windows I/O 的深层(第1回) ── 所有读写都会变成 IRP:I/O 系统全貌
本文是从根源讲解 Windows I/O 系统的系列第 1 回。通过图解梳理对象管理器的命名空间、驱动程序・设备・文件这三种对象、IRP 的生命周期,直至 CloseHandle 的背后机制。
-
SMB 签名与 LDAP 通道绑定 ── 用实务收紧 NTLM 对策的「另一半」
在停用 NTLM 之前,用来抑制中继攻击损害的防御手段就是 SMB 签名与 LDAP 签名・通道绑定。本文从实务角度整理各操作系统的默认值、审核事件的解读方法、推进到强制的步骤,直至业务应用与设备的修复方法。
-
图解 NTLM 与 Kerberos ── 为什么认证会「回退」到 NTLM
本文通过图解整理 NTLM 与 Kerberos 的区别,涵盖挑战/响应机制、TGT 与服务票据、SPN 无法解析时 Negotiate 回退到 NTLM 的条件、中继攻击与 Pass-the-Hash 得以成立的原因,直至 NTLMv1 被移除,并附有官方文档依据。
-
NTLM 停用会导致业务应用停止运行吗 ── 审核日志的获取方法与消除依赖的顺序
围绕 NTLM 停用,本文整理了排查自身 Windows 环境与业务应用在何处依赖 NTLM 的步骤。内容涵盖审核策略、NTLM/Operational 日志中事件 8001~8004 的追踪方法、回退到 NTLM 的典型模式及修复方式,直至 SMB 的 NTLM 拦截功能。
-
Windows的TPM是什么 ── 图解「不外泄密钥的保险柜」与度量启动
用图解说明TPM。整理密钥不外流到芯片外的机制、PCR与度量启动、BitLocker和Windows Hello中的用法、dTPM・fTPM・Pluton的区别、用Get-Tpm确认状态的方法,以及被要求输入恢复密钥时的应对,全部立足于实务视角。
-
用 winget + PowerShell 自动化 PC 装机 ── 让操作手册可执行
本文整理了让新员工电脑的初始设置具备可复现性的方法,涵盖通过 winget 进行应用安装与 export/import、WinGet Configuration 的声明式配置、用 PowerShell 补充的设置,直至无人值守执行时的注意事项。
-
PowerShell 的安全加固 ── 日志・AMSI・语言模式・JEA
本文整理了在不禁止 PowerShell 的前提下安全使用它的实务要点,讲解启用脚本块日志与转录、禁用 AMSI 与旧版本引擎的绕过路径、通过语言模式加以限制,直至用 JEA 进行权限委任。
-
用 Get-WinEvent 实务排查事件日志 ── 筛选速度决定调查时间
本文整理用 PowerShell 提升 Windows 事件日志调查效率的方法,涵盖用 Where-Object 筛选为何缓慢、FilterHashtable 与 XPath 的区分使用、重启・登录・应用异常终止的调查方法,直至多台计算机的日志收集。
-
用 PowerShell 与 REST API 集成 ── Invoke-RestMethod 的实务
本文整理从 PowerShell 调用内部系统 API 与 SaaS REST API 的实务做法,涵盖认证请求头的传递方式、日语 JSON 乱码的应对、4xx/5xx 错误处理、429 重试、分页,直至代理与 TLS 的陷阱。
-
PowerShell脚本运行慢时该看哪里 ── 数组・管道・匹配的诀窍
整理 PowerShell 脚本变慢的常见原因。从数组 += 导致 O(n^2) 的原理、管道与 foreach 的差异、匹配的哈希表化、文件 I/O 的改善,到正确的测量方法,从实务角度进行讲解。
-
不再使用 Write-Host ── PowerShell 的输出流与日志设计
本文整理 PowerShell 六个输出流的用法区分、Write-Host 存在的问题与正确的使用场景、函数返回值被污染的原因、通过 -Verbose 与 -InformationVariable 实现调用方控制,以及结构化日志的留存方法。
-
PowerShell 的并行处理 ── ForEach-Object -Parallel 与作业(Job)的选用之道
本文从实务角度整理 ForEach-Object -Parallel、Start-ThreadJob、Start-Job 的区别与选用之道,$using: 与线程安全性,ThrottleLimit 的确定方法,以及反而会变慢的情形。
-
从 PowerShell 正确调用外部 exe ── 参数引用、退出代码与乱码的陷阱
从 PowerShell 调用 robocopy 或公司内部 EXE 时,参数会损坏、拿不到退出代码、输出还会出现乱码。本文从实务角度整理 PowerShell 7.3 的参数传递变更、停止解析令牌 --%、以及 Start-Process 的使用区分。
-
Process Explorer / Handle / VMMap 实战 ── 从此刻的状态追查挂起・泄漏・「文件正在使用」问题
这是排查「逐渐变卡」「文件删不掉」「挂起无响应」问题的 Sysinternals 实战第二弹。从实务角度讲解 Process Explorer 的句柄搜索・线程堆栈・泄漏监控列、handle.exe,以及用 VMMap 对内存构成进行切分的方法。
-
Windows的时刻同步(w32time)与业务系统 ── 从原理出发解决「日志时间戳对不上」的问题
从 Windows 时间服务(w32time)的原理出发,讲解设备与 PC 之间日志时刻偏差的成因。整理域层级结构与工作组的默认行为、w32tm 命令诊断、高精度时刻与虚拟机的注意事项,直至 Stopwatch 与 UTC 并用的日志设计。
-
注册表的32位/64位重定向与虚拟化陷阱 ── Wow6432Node与「写入的值找不到了」问题
从实务角度梳理32位应用写入HKLM\Software时被重定向到Wow6432Node的机制、UAC虚拟化转发到VirtualStore的触发条件、COM注册按位数分离带来的实际危害,直至用RegistryView、reg.exe /reg:64正确读写的方法。
-
这个批处理文件,应该迁移到 PowerShell 吗?── cmd/bat 资产盘点与迁移判断
用判断表梳理企业内部遗留的批处理文件(bat)是否应迁移到 PowerShell。对比 cmd 与 VBScript 的境遇差异、错误不会中止等 bat 特有的弱点、过渡期的写法、命令改写对照表与迁移步骤。
-
从 PowerShell 调用 COM 与 .NET 的实践 ── 一举拓宽脚本触达的范围
本文从实务角度讲解从 PowerShell 调用 .NET 类的方法、通过 Add-Type 嵌入 C# 与 Win32 API、COM 操作、Excel 进程残留与后续处理、Office 无人执行不受支持的原因,以及 5.1 与 7 之间的差异。
-
Power Automate 与 PowerShell+任务计划程序的使用场景划分 ── 不混用自动化工具,物尽其用地对接
面向 PowerShell+任务计划程序的夜间批处理与 Power Automate 流程开始在企业内部混用的中小企业信息系统部门,整理两者擅长领域的差异、该用哪种工具制作的判断表、通过 SharePoint 实现松耦合对接的联动模式,以及许可证与维护方面的注意事项。
-
PowerShell 中凭据的安全处理方式 ── 把明文密码逐出脚本
本文整理将 PowerShell 脚本中的明文密码迁移到安全存储的步骤。讲解 SecureString 的真实面貌与局限、Export-Clixml 基于 DPAPI 保存的原理,直至 SecretManagement/SecretStore 的适用场景。
-
PowerShell 脚本的参数设计与模块化 ── 从「能运行的脚本」到「可以交给别人的脚本」
本文整理把 PowerShell 脚本提升到可以交给他人使用的品质的具体步骤,讲解 param 块与 [CmdletBinding()]、输入验证、管道输入、-WhatIf 支持、.psm1 模块化,直至内部共享与 Git 管理的要点。
-
用 PowerShell 盘点文件服务器 ── 容量调查与访问权限(ACL)审计
用 PowerShell 对文件服务器进行盘点的实务步骤。整理容量调查与访问拒绝的记录、旧文件清单与重复候选的哈希提取、通过 Get-Acl 进行权限审计与继承中断检测、生成 CSV 报表、与 icacls 的分工使用,以及 Set-Acl 的安全变更步骤。
-
PowerShell Remoting(WinRM)入门 ── 批量管理多台 Windows
PowerShell Remoting(WinRM)批量管理多台 Windows 的入门指南。整理其原理与端口 5985/5986、Enable-PSRemoting 会做的事情、工作组环境的 TrustedHosts、Invoke-Command 与 PSSession、second hop 问题,以及安全运维...
-
Windows PowerShell 5.1 与 PowerShell 7 的区别 ── 企业内部脚本迁移实务指南
整理 Windows PowerShell 5.1 与 PowerShell 7 的关系(共存与 pwsh.exe)、5.1 不再新增功能的官方方针、编码差异导致的乱码、用 #Requires 进行防御,直至任务计划程序更新的迁移步骤。
-
用 PowerShell 自动化 Excel・CSV 业务处理 ── 汇总・核对・报表输出的实务方案
用 PowerShell 自动化 CSV 汇总、核对与 Excel 报表输出的实务方案。讲解 Import-Csv/Export-Csv 的默认字符编码(5.1 与 7 的差异)、用 Group-Object 汇总、用 Compare-Object 与哈希表核对,以及 ImportExcel 与 Excel CO...
-
PowerShell 的错误处理与重试设计 ── 从 try/catch 失效的陷阱到 exit code、重试的实务定式
本文从实务角度整理 PowerShell 终止错误与非终止错误的区别、try/catch 失效陷阱与 -ErrorAction Stop 的应对定式、用 $LASTEXITCODE 判断成败、exit code 设计,直至指数退避重试的完整流程。
-
PowerShell 的执行策略与脚本签名 ── 从「用 Bypass 蒙混过关」的运维方式毕业的实务指南
PowerShell 的执行策略『不是安全边界,而是一种安全装置』。本文梳理 RemoteSigned 等策略的差异、作用域的优先顺序、Mark of the Web 与 Unblock-File、脚本签名,以及公司内部分发的现实运维方式。
-
如何理解 Windows 的会话隔离 ── Session 0・RDP・多用户同时运行
整理 Windows 应用程序开发者容易混淆的「会话」概念。说明服务无法显示 UI 的 Session 0 隔离原因、RDP 连接时会话的行为、命名对象的会话隔离,以及共享 PC・RDS 环境中常见的设计失误,从实务角度解说。
-
防止 Windows 应用程序重复启动 ── 命名 Mutex 与重复执行时的窗口前置
整理业务型 Windows 应用程序的常见需求——「不让同一个应用程序启动两次」——如何用命名 Mutex 来实现。涵盖 Global\ 与 Local\ 命名空间差异在 RDP 环境中的陷阱、拥有线程限制与 AbandonedMutexException、在 SetForegroundWindow 限制下把已有...
-
在 WinForms/WPF 应用中集成 Entra ID 认证 —— MSAL.NET 与 WAM Broker 的实务架构
本文以实务视角整理在 WinForms/WPF 桌面应用中集成 Entra ID(原 Azure AD)认证的步骤:公共客户端的思路、ROPC 被弃用的现状、应用注册、MSAL.NET 的 AcquireTokenSilent 模式、WAM Broker、令牌缓存的持久化,以及导入判断与运维中的坑。
-
业务应用的日期时间与时区 ── 从 DateTime 的陷阱到 UTC 存储原则、测试设计
服务器迁移后时间整整差了 9 个小时、只有海外分支机构的日期会变成前一天——本文从 DateTime 的 Kind 与隐式转换梳理日期时间事故的根本原因。内容涵盖与 DateTimeOffset 的取舍、UTC 存储与 ISO 8601 原则、TimeZoneInfo 与夏令时、和 SQL Server/SQLi...
-
Windows 桌面应用的 UI 自动化测试 ── UI Automation 原理与用 FlaUI 打造不易损坏的测试
本文从 Windows UI Automation 的原理(树结构、AutomationId、控件模式)出发,梳理 WinForms/WPF 应用的 UI 自动化测试。内容涵盖用 FlaUI 实现的最小示例、WinAppDriver 的现状、通过 AutomationId 设计与条件等待让测试不易损坏的方法,以及...
-
WPF 高 DPI 支持──「不是应该对 DPI 很强吗」却仍模糊、渗色的原因与对策
WPF 以 DIP(1/96 英寸)进行布局,从一开始就是 System DPI Aware,但移动到 DPI 不同的显示器时整体会渗色,位图与细线也会模糊。本文从实务角度整理原因判断、.NET Framework 4.6.2/.NET 上的 Per-Monitor DPI 支持声明方式、UseLayoutRou...
-
WinForms 的高DPI支持 - 4K显示器下模糊、错位的原因与实用对策
本文从 DPI 虚拟化与 DPI 感知模式(System Aware / Per-Monitor V2)的角度,整理 WinForms 应用在4K显示器、150%缩放环境下显示模糊、布局错乱的原因,并说明 .NET 与 .NET Framework 各自的配置方法、AutoScaleMode 与设计器的陷阱,以及...
-
Windows 的进程间通信该怎么选 ── 命名管道 / TCP / gRPC / 共享内存 / COM 判断表
整理 Windows 应用程序之间应该如何选择通信方式。用判断表整理命名管道、本地 TCP、gRPC、共享内存、文件对接、COM 各自的优势与陷阱,并从实务角度说明 UI+服务分离・32bit/64bit 桥接・权限边界等常见架构,以及命名管道的实现示例。
-
在 C# 业务应用中使用 SQLite ── WAL 模式、排他控制、防损坏对策、与 EF Core 的取舍
本文整理在 Microsoft.Data.Sqlite 中把 SQLite 嵌入业务 Windows 应用的实务知识:连接字符串与连接池、WAL 模式的原理、SQLITE_BUSY 与写入归并、通过事务提速、类型映射的陷阱、用 VACUUM INTO 备份,以及该在什么场合使用 EF Core。
-
Windows 服务的创建与运维 ── 从任务计划程序的取舍到 BackgroundService 服务化
常驻处理应该做成 Windows 服务,还是任务计划程序就够用?本文整理判断表,以及用 .NET Worker Service(UseWindowsService)创建服务的方法、运行账户、恢复选项、事件日志、安全停止处理,从实务角度梳理投入运维所需的设计。
-
IE 模式之后换成 WebView2 就够了吗 ── ActiveX 无法运行的限制与现实的迁移设计
本文从内部系统的角度,梳理 WebView2 的基本结构、Evergreen 与 Fixed Version 两种分发策略、用户数据文件夹的陷阱、原生与 Web 的联动方式,并在「ActiveX 无法运行」这一限制的前提下,整理出摆脱 IE 模式依赖系统的现实迁移顺序。
-
Windows应用的数据存储位置怎么选 ── SQLite / JSON / 注册表 / Access 判断表
Windows桌面应用的数据该存在哪里、用什么格式保存?本文整理AppData/ProgramData的使用区分,以及SQLite、JSON文件、注册表、Access(.accdb)各自的优势与陷阱,并附判断表,从实务角度讲解防止数据损坏与位数问题等注意事项。
-
任务计划程序的任务不执行、以 0x1 结束 ── 原因排查与安全的运维设计
本文整理 Windows 任务计划程序的执行账户与登录类型、「不管用户是否登录都要运行」的含义、以 0x1 结束的典型原因、启用历史记录、防止多重启动、PowerShell 脚本的正确调用方式,直到把定期执行真正落实到运维上的设计方针。
-
Windows 的 MFC 是什么 —— 维护现有资产所需的基础知识
整理 Microsoft Foundation Classes(MFC)的概要、与 Win32 的关系、应用程序结构、消息映射、Document/View、DDX/DDV,以及维护时需要注意的要点。
-
报废 Windows 电脑前应该做的事 —— 数据清除、账户解绑、备份的实务检查清单
本文整理在报废、转让、出售、归还租赁的 Windows 电脑之前应该做的事,涵盖备份、数据清除、BitLocker、Microsoft 账户、OneDrive、公司账户、开发者电脑特有的敏感信息,以及报废记录留存等要点。
-
委托开发 Windows 应用程序前该梳理的事项
在委托外包开发 Windows 应用程序之前,梳理现有软件改造、设备联动、COM/ActiveX、发布与更新、维护等需要注意的要点。
-
正确处理 Windows 的模拟令牌 ── 线程级权限借用与安全的还原方式
本文围绕 Windows 的模拟令牌,梳理访问令牌、主令牌、线程令牌、模拟级别、RevertToSelf,直至 .NET 的 WindowsIdentity.RunImpersonated,整理在实务中安全处理它们的思路。
-
在 C#(CSharp)中执行 PowerShell 并以对象形式接收结果
本文从实务角度整理如何从 C# 启动 PowerShell,并以 PSObject 而非字符串来接收结果,涵盖 PowerShell SDK、AddCommand、AddParameter、BaseObject、Properties 直至错误处理。
-
用 Pester 完善 PowerShell 测试 ── 让运维脚本不易损坏的实务方法
本文整理用 Pester v5 测试 PowerShell 脚本的实务步骤,涵盖日期处理、文件操作、删除处理、Mock,一直到 CI 执行,帮助安全地打好测试基础。
-
Windows为何演变成如今的样子:从开发者视角看历代Windows的演进
本文从兼容性、稳定性、权限管理、驱动程序、Win32、.NET、信息安全等Windows应用程序开发者的视角,梳理Windows 95到Windows 11的变化,而不是单纯以外观年表的方式呈现。
-
面向Windows应用开发者的CPU设置入门:优先级・亲和性・P核心/E核心
本文面向Windows应用开发者,整理CPU优先级、亲和性、P核心/E核心、节能设置与EcoQoS/Efficiency Mode之间的关系,以及衡量性能、响应性与发热的思路。
-
开发者的奇爱,或者我如何学会停止焦虑并爱上Windows
Windows很麻烦。但这种麻烦,恰恰是因为它是一个长年背负着现实业务的操作系统才会有的麻烦。
-
PowerShell 实用命令合集 —— 积累日常工作中常用的小工具
本文整理 PowerShell 日常工作中常用的实用命令,说明 Measure-Object、Group-Object、Select-String、Compare-Object、Tee-Object、Start-Transcript 等命令的使用场景和时机。
-
PowerShell 脚本进阶 ── 安全地实现日志排查、归档与报表自动化
本文整理了用 PowerShell 脚本安全推进日志排查、CSV 报表、旧日志归档、留存记录,直至任务计划程序执行的实务步骤。
-
PowerShell 命令基础 ── 应先掌握的操作与安全使用方法
为了让 PowerShell 初学者在实际工作中不会迷失方向,本文整理了如何查找 Cmdlet、管道、文件操作、CSV 处理、执行策略,以及避免事故的确认步骤。
-
Windows出现“Windows 已保护你的电脑”提示的原因
整理Windows应用分发时出现SmartScreen警告的原因,从代码签名、EV/OV证书、Azure Artifact Signing、MSIX、Microsoft Store、ClickOnce、企业内部分发到App Control,以实务角度梳理应对方法。
-
摆脱 IE 模式依赖系统的实践指引
本文围绕站点列表集中管理、中立站点、WebView2 封装、分阶段重构、VDI 隔离直到治理设计,梳理出一套让依赖 Microsoft Edge IE 模式的内部 Web 系统能够安全延续使用、并逐步摆脱依赖的实操路径,力求让读者可以直接照着落地执行。
-
Office 2024/Microsoft 365 中 ActiveX 无法运行的原因与排查步骤
梳理在 Office 2024/Microsoft 365 中 ActiveX 无法运行时,按默认禁用、32bit/64bit、COM 注册、依赖 DLL、IE 模式、Click-to-Run 日志的顺序进行排查的方法。
-
为 VBScript 弃用做准备:VBA·企业内部工具排查指南
本文整理 VBScript 分阶段弃用前,VBA、Excel 宏与企业内部工具的资产排查、静态检测、执行日志采集、替代技术选型、测试与分阶段推广的做法。
-
GCPW 是什么 - 用 Google 账号处理 Windows 登录的方法
整理 Google Credential Provider for Windows(GCPW)的工作原理、与 Windows device management 搭配使用的方式、现有用户配置文件的处理、首次登录、离线场景、两步验证,以及导入时的注意事项。
-
Windows 的文字编码与换行符 - 乱码与 CRLF/LF 的基础
本文整理 Windows 上容易混淆的 Shift_JIS / UTF-8 / UTF-16、乱码、CRLF / LF 之间的区别,用便于实务判断的方式呈现。
-
ClickOnce 是什么 - 从实务角度整理其原理、更新机制以及适用与不适用的场景
本文围绕用于 .NET Windows 桌面应用发布的 ClickOnce 技术,结合 Mermaid 图整理其清单(manifest)、更新、缓存、签名机制,以及适用与不适用的项目类型。
-
用 Windows Sandbox 加快应用验证的方法
本文整理如何利用 Windows Sandbox 提升管理员权限问题排查、干净环境复现、权限不足与资源不足复现的效率,并说明 .wsb 与 CLI 的分工使用方式。
-
Windows DLL 名称解析机制 - 搜索顺序与 SxS
本文从实务角度整理 Windows 的 DLL 名称解析机制,涵盖 DLL search order、Known DLLs、loaded-module list、API set、SxS manifest,以及 LoadLibrary 系列 API 的影响。
-
Windows 什么时候需要管理员权限 - UAC、保护区域与设计上的辨别方式
从边界与存储位置的角度,整理 Windows 什么时候真正需要管理员权限:UAC、保护区域、HKLM、服务、驱动、防火墙。同时说明 per-user 与 per-machine 的差异,以及把管理员处理拆成独立 EXE、服务或任务的设计取舍,帮读者判断该不该提升权限。
-
理清 Windows 的文字编码 - 乱码为什么会发生,尤其是和 Linux 搭配时容易出问题的地方
本文从 CP932、UTF-8、UTF-16、BOM、code page、PowerShell、Linux locale 的差异出发,从实务角度整理 Windows 上乱码发生的原因。
-
外部设备状态检查与显示的最佳实践 - 不要只用『连接中』敷衍了事的设计
在外部设备联动应用中,如果把状态压缩成单一的『连接中』,就容易造成误导。本文整理检测、响应确认、可用性、数据新鲜度、显示文案与重连的设计要点。
-
Windows 应用安全处理子进程的清单 - Job Object、退出传播、标准输入输出、watchdog 最佳实践
在 Windows 应用中安全处理子进程,比起选择启动 API,更重要的是设计进程树的所有权和结束流程。本文整理 Job Object、退出传播、标准输入输出与 watchdog。
-
Windows 应用发布方式怎么选 - MSI / MSIX / ClickOnce / xcopy / 自定义 updater 判断指南
Windows 应用的发布方式不是 installer 形式的偏好问题,而是与 OS 的耦合程度和更新责任由谁承担的选择。本文从实务角度整理 MSI / MSIX / ClickOnce / xcopy / 自定义 updater 的选型思路。
-
Windows 应用的单文件分发 - 单一可执行文件与系统依赖的界限
整理在 Windows 上想把应用做成 1 个 EXE 时,「把发布物合并成一个文件」与「消除系统依赖」之间的区别,涵盖 .NET、C++、WebView2、WinUI、服务与驱动等场景。
-
在 Windows 环境下减少 Codex 乱码事故的最佳实践 - 先把『指示方式』钉住,再谈环境整备
本文整理在 Windows 上让 Codex 安全处理日文文件的指示原则:读文件前先确认 encoding 与 BOM,疑似乱码禁止臆测保存,现有文件维持原状,仅新建采用 UTF-8,并在写入后重新读取代表性日文行验证,把规则沉淀进 AGENTS.md 以减少事故。
-
Windows 用户配置文件入门 - AppData 与 NTUSER.DAT
整理 Windows 用户配置文件的基础知识、AppData 的使用区分、本地 / 漫游 / Mandatory / Temporary、Folder Redirection、FSLogix,以及故障时的排查思路。
-
把 Windows 的「处理器计划」改成「后台服务」会发生什么 - 整理 quantum、优先级提升、P-Core/E-Core
整理把 Windows 的「处理器计划」切到「后台服务」时,到底改变的是哪一层;从 quantum、前台偏好、优先级提升,一路接到 Windows 11 hybrid CPU 上 QoS 与 P-Core/E-Core 的选择,并区分什么情况真的有效、什么情况其实是 DPC、驱动、EcoQoS 等别的问题。
-
在 Windows 上正确比较不同版本程序运行速度的方法
本文整理在 Windows 上比较程序版本差异时如何提升可复现性,涵盖 power mode 与 power plan 的区分、散热与背景噪声的控制、测量指标的选择,以及差异较小时如何用 ETW / WPR 深入排查原因。
-
Windows 网卡高级设置详解 - Jumbo Packet、RSS、LSO、RSC、Flow Control、EEE、Wake on LAN 到底怎么设置
本文以实务角度逐项拆解 Windows 网卡高级设置,从 Speed & Duplex、Jumbo Packet 到 RSS、RSC、LSO、Interrupt Moderation、Flow Control、EEE 与 Wake on LAN,说明每项调整在吞吐量、延迟、CPU 与省电之间的取舍,并提供按症状排...