最完整的Windows Defender移除工具发布指南:从开发到Release全流程
你还在为Windows Defender移除工具的发布流程感到困惑吗?本文将从开发环境搭建到最终版本发布,一步一步带你掌握专业级开源工具的完整发布流程。读完本文,你将能够独立完成从代码开发、版本控制、测试验证到最终发布的全流程操作,并了解如何处理发布过程中的常见问题。
目录
开发环境准备
必要工具与环境配置
| 工具/环境 | 版本要求 | 用途 | 安装方式 |
|---|---|---|---|
| Windows | 10/11 专业版 | 开发与测试平台 | 系统自带 |
| PowerShell | 7.0+ | 脚本开发与执行 | 微软官方下载 |
| Git | 2.30+ | 版本控制 | Git国内镜像 |
| Visual Studio | 2019+ | 可选,用于C#组件开发 | Visual Studio官网 |
| 7-Zip | 21.0+ | 压缩发布包 | 7-Zip中文官网 |
| Registry Workshop | 5.0+ | 注册表编辑与测试 | 官方网站 |
环境搭建步骤
- 安装Git并配置用户信息:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global core.autocrlf true
- 克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/wi/windows-defender-remover.git
cd windows-defender-remover
- 安装必要的PowerShell模块:
Install-Module -Name PSReadLine -Force
Install-Module -Name PSScriptAnalyzer -Force
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
- 验证开发环境:
# 检查PowerShell版本
$PSVersionTable.PSVersion
# 检查Git版本
git --version
# 检查项目文件结构
Get-ChildItem -Recurse | Select-Object FullName
代码开发与版本控制
项目结构解析
mindmap
root((windows-defender-remover))
核心脚本
defender_remover13.ps1
Script_Run.bat
RemoveSecHealthApp.ps1
注册表文件
Remove_Defender
RemoveDefender.reg
Remove_SecurityComp
Remove_SecurityComp.reg
Remove_defender_moduled
*.reg
工具与资源
PowerRun.exe
PowerRun.ini
app_icon.ico
文档
README.md
LICENSE
管理脚本
@Management/RegistryUnifier.ps1
版本控制策略
分支管理模型
采用简化版Git Flow工作流:
gitGraph
commit
branch develop
checkout develop
commit
commit
branch feature/registry-optimization
checkout feature/registry-optimization
commit
commit
checkout develop
merge feature/registry-optimization
commit
branch release/v13.5
checkout release/v13.5
commit
checkout main
merge release/v13.5
tag "v13.5"
checkout develop
merge release/v13.5
提交信息规范
采用Angular提交规范:
feat: 添加新功能fix: 修复bugdocs: 文档更新style: 代码格式调整refactor: 代码重构test: 添加测试chore: 构建过程或辅助工具变动
示例:
git commit -m "feat: 添加Windows 11 22H2支持"
git commit -m "fix: 修复注册表项删除不彻底问题"
git commit -m "docs: 更新README中的安装说明"
核心功能开发详解
以注册表操作模块开发为例,展示完整开发流程:
- 创建新功能分支:
git checkout develop
git pull
git checkout -b feature/registry-optimization
- 开发注册表统一处理脚本:
# @Management/RegistryUnifier.ps1
param(
[Parameter(Mandatory=$true)]
[string]$RegFileDirectory,
[Parameter(Mandatory=$true)]
[string]$OutputFile
)
# 功能:合并多个注册表文件为一个优化版本
function Merge-RegistryFiles {
[CmdletBinding()]
param(
[string[]]$RegFiles,
[string]$OutputPath
)
# 实现代码...
}
# 功能:优化注册表项,去除冗余项
function Optimize-RegistryEntries {
[CmdletBinding()]
param(
[string]$RegContent
)
# 实现代码...
}
# 主执行流程
$regFiles = Get-ChildItem -Path $RegFileDirectory -Filter *.reg -Recurse | Select-Object -ExpandProperty FullName
$mergedContent = Merge-RegistryFiles -RegFiles $regFiles
$optimizedContent = Optimize-RegistryEntries -RegContent $mergedContent
$optimizedContent | Out-File -FilePath $OutputFile -Encoding Unicode
- 提交并推送分支:
git add @Management/RegistryUnifier.ps1
git commit -m "feat: 添加注册表统一处理脚本"
git push -u origin feature/registry-optimization
- 创建Pull Request并进行代码审查
构建流程解析
构建脚本解析
项目的构建流程通过Script_Run.bat实现,该脚本负责协调各组件的执行顺序:
@set defenderremoverver=12.8.4
@setlocal DisableDelayedExpansion
@echo off
pushd "%CD%"
CD /D "%~dp0"
:: 参数处理部分
IF "%1"== "y" GOTO :removedef
IF "%1"== "Y" GOTO :removedef
:: ...其他参数处理
:: 主菜单显示
cls
echo ------ Defender Remover Script , version %defenderremoverver% ------
echo Select an option:
echo.
echo [Y] Remove Windows Defender Antivirus + Disable All Security Mitigations
echo [A] Remove Windows Defender only, but keep UAC Enabled
echo [S] Disable All Security Mitigations
choice /C:yas /N
if errorlevel==3 goto disablemitigations
if errorlevel==2 goto removeantivirus
if errorlevel==1 goto removedef
构建流程详解
flowchart TD
A[启动Script_Run.bat] --> B[检查命令行参数]
B -->|有参数| C[直接执行对应功能]
B -->|无参数| D[显示选择菜单]
D --> E[用户选择操作模式]
E -->|Y选项| F[完全移除模式]
E -->|A选项| G[仅移除Defender]
E -->|S选项| H[仅禁用安全缓解措施]
F --> I[执行bcdedit命令禁用Hypervisor]
I --> J[运行RemoveSecHealthApp.ps1移除安全应用]
J --> K[导入所有注册表文件]
K --> L[删除Defender相关文件和目录]
L --> M[计划系统重启]
注册表文件处理机制
项目中使用大量.reg文件来修改系统设置,这些文件按功能模块化组织:
-
Remove_defender_moduled目录包含细粒度的注册表修改:
- DisableAntivirusProtection.reg:禁用防病毒保护
- DisableDefenderPolicies.reg:禁用Defender策略
- RemoveDefenderTasks.reg:移除Defender任务计划
- RemoveServices.reg:移除Defender服务
-
注册表文件导入流程:
:: 导入注册表文件的代码片段
FOR /R %%f IN (Remove_defender\*.reg) DO PowerRun.exe regedit.exe /s "%%f"
FOR /R %%f IN (Remove_defender\*.reg) DO regedit.exe /s "%%f"
FOR /R %%f IN (Remove_SecurityComp\*.reg) DO PowerRun.exe regedit.exe /s "%%f"
- 注册表修改验证方法:
# 检查Windows Defender服务状态
Get-Service -Name WinDefend, WdNisSvc, Sense
# 检查注册表项
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender" -Name DisableAntiSpyware
Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender"
测试与验证策略
测试环境配置
为确保工具在不同环境下的兼容性,需要在多种配置下进行测试:
| 测试环境 | Windows版本 | 系统架构 | 测试重点 |
|---|---|---|---|
| 基础测试 | Windows 10 21H2 | x64 | 基本功能验证 |
| 兼容性测试 | Windows 10 22H2 | x64 | 最新版本兼容性 |
| 兼容性测试 | Windows 11 21H2 | x64 | 新系统适配性 |
| 兼容性测试 | Windows 11 22H2 | x64 | 最新系统兼容性 |
| 边缘测试 | Windows 10 LTSC 2019 | x64 | 长期支持版本 |
| 边缘测试 | Windows 10 1809 | x86 | 32位系统兼容性 |
测试用例设计
功能测试用例(部分示例)
| 用例ID | 测试场景 | 操作步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|
| TC-001 | 完全移除Defender | 1. 运行Script_Run.bat 2. 选择Y选项 3. 重启系统 |
Windows Defender服务被移除,安全中心应用消失 | 高 |
| TC-002 | 仅移除Defender保留UAC | 1. 运行Script_Run.bat 2. 选择A选项 3. 重启系统 |
Defender被移除,UAC仍可正常工作 | 高 |
| TC-003 | 仅禁用安全缓解措施 | 1. 运行Script_Run.bat 2. 选择S选项 3. 重启系统 |
安全缓解措施被禁用,Defender仍保留 | 中 |
| TC-004 | 命令行参数测试 | 1. 打开CMD 2. 执行Script_Run.bat y 3. 观察行为 |
无需交互直接执行完全移除流程 | 中 |
回归测试清单
每次版本更新必须执行的关键测试:
- 系统启动速度测试
- Windows更新兼容性测试
- 第三方安全软件兼容性测试
- 系统恢复功能测试
- 性能影响评估
自动化测试实现
使用PowerShell Pester框架实现部分自动化测试:
# tests/DefenderRemoval.Tests.ps1
BeforeAll {
# 导入测试辅助函数
. $PSScriptRoot/TestHelpers.ps1
}
Describe "Defender Removal Tests" {
Context "After running full removal (Option Y)" {
BeforeAll {
# 在测试环境中执行移除操作
Start-Process -FilePath "$PSScriptRoot/../Script_Run.bat" -ArgumentList "y" -Wait
Restart-Computer -Force -Wait
}
It "Should remove Windows Defender service" {
$service = Get-Service -Name WinDefend -ErrorAction SilentlyContinue
$service | Should -Be $null
}
It "Should set correct registry values" {
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows Defender"
$value = Get-ItemPropertyValue -Path $regPath -Name DisableAntiSpyware -ErrorAction SilentlyContinue
$value | Should -Be 1
}
It "Should remove Security Health app" {
$app = Get-AppxPackage -Name *SecHealthUI* -ErrorAction SilentlyContinue
$app | Should -Be $null
}
}
}
运行自动化测试:
Invoke-Pester -Path tests/DefenderRemoval.Tests.ps1 -Output Detailed
版本发布完整步骤
发布前准备清单
| 检查项 | 检查内容 | 负责人 | 完成状态 |
|---|---|---|---|
| 代码检查 | 所有功能分支已合并到develop | 开发人员 | □ |
| 测试验证 | 所有测试用例通过 | 测试人员 | □ |
| 版本号更新 | 所有相关文件中的版本号已更新 | 开发人员 | □ |
| 文档更新 | README.md和使用说明已更新 | 文档人员 | □ |
| 版权信息 | LICENSE文件有效且信息正确 | 项目负责人 | □ |
| 依赖检查 | 所有外部依赖项已确认可用 | 开发人员 | □ |
版本号规范
采用语义化版本控制(Semantic Versioning):
- 主版本号(Major):不兼容的API变更,如13.x.x
- 次版本号(Minor):向后兼容的功能性新增,如x.8.x
- 修订号(Patch):向后兼容的问题修正,如x.x.4
版本号更新位置:
Script_Run.bat中的defenderremoverver变量README.md中的版本信息- 发布标签
构建发布包
使用PowerShell脚本自动化构建过程:
# Build-ReleasePackage.ps1
param(
[Parameter(Mandatory=$true)]
[string]$Version,
[string]$OutputDir = "$PWD/releases"
)
# 创建输出目录
New-Item -ItemType Directory -Path $OutputDir -Force | Out-Null
# 清理临时文件
Remove-Item -Path "$PWD/temp" -Recurse -Force -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Path "$PWD/temp" -Force | Out-Null
# 复制必要文件到临时目录
Copy-Item -Path "*.ps1", "*.bat", "*.exe", "*.ini", "*.ico", "LICENSE", "README.md" -Destination "$PWD/temp"
Copy-Item -Path "Remove_Defender", "Remove_SecurityComp", "Remove_defender_moduled", "Remove_SecurityComp_moduled", "@Management", "ew" -Destination "$PWD/temp" -Recurse
# 创建压缩包
$zipPath = "$OutputDir/windows-defender-remover-v$Version.zip"
7z a -tzip $zipPath "$PWD/temp/*" -mx=9 -r
# 创建校验和文件
(Get-FileHash -Path $zipPath -Algorithm SHA256).Hash | Out-File -Path "$zipPath.sha256" -Encoding ASCII
# 清理临时文件
Remove-Item -Path "$PWD/temp" -Recurse -Force
Write-Host "Release package created: $zipPath"
执行构建:
.\Build-ReleasePackage.ps1 -Version "12.8.4" -OutputDir "C:\releases"
GitHub Release发布流程
- 创建发布标签:
git tag -a v12.8.4 -m "Release version 12.8.4"
git push origin v12.8.4
- 准备发布说明(RELEASE_NOTES.md):
## Windows Defender Remover v12.8.4
### 新功能
- 添加对Windows 11 22H2的完整支持
- 优化注册表修改逻辑,提高执行速度
- 新增静默安装参数
### 改进
- 改进文件删除算法,减少残留文件
- 优化重启前的清理流程
- 增强错误处理和日志记录
### 修复
- 修复在某些系统上UAC禁用不完全的问题
- 修复Windows更新后Defender服务重新启用的问题
- 修复64位系统上的注册表权限问题
### 使用方法
1. 下载压缩包并解压
2. 以管理员身份运行Script_Run.bat
3. 根据提示选择操作模式
- 使用GitHub API创建发布:
# 使用GitHub CLI创建发布
gh release create v12.8.4 `
--title "Windows Defender Remover v12.8.4" `
--notes-file RELEASE_NOTES.md `
releases/windows-defender-remover-v12.8.4.zip `
releases/windows-defender-remover-v12.8.4.zip.sha256
常见问题解决方案
开发常见问题
1. 注册表修改不生效
问题原因:
- 权限不足
- 注册表项被锁定
- 系统保护机制阻止修改
解决方案:
# 使用PowerRun提升权限执行注册表操作
Start-Process -FilePath ".\PowerRun.exe" -ArgumentList "regedit.exe /s .\Remove_Defender\RemoveDefender.reg" -Wait
# 检查并获取注册表权限
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows Defender"
$acl = Get-Acl -Path $regPath
$rule = New-Object System.Security.AccessControl.RegistryAccessRule(
"Administrators", "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow"
)
$acl.SetAccessRule($rule)
Set-Acl -Path $regPath -AclObject $acl
2. PowerShell脚本执行错误
问题原因:
- 执行策略限制
- .NET Framework版本不兼容
- 脚本编码问题
解决方案:
# 更改执行策略
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
# 检查.NET版本
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse |
Get-ItemProperty -Name Version, Release -ErrorAction SilentlyContinue |
Where-Object { $_.PSChildName -match '^(?!S)\p{L}' } |
Select-Object PSChildName, Version, Release
# 转换脚本编码为UTF-8无BOM
$content = Get-Content -Path ".\defender_remover13.ps1" -Raw
Set-Content -Path ".\defender_remover13.ps1" -Value $content -Encoding UTF8NoBOM
发布常见问题
1. 误报病毒问题
问题描述:发布的可执行文件被杀毒软件误报为恶意程序。
解决方案:
- 提供源代码下载选项,让用户自行编译:
## 避免误报的方法
如果下载的可执行文件被杀毒软件标记,请尝试以下方法:
### 方法1:使用源代码
1. 克隆仓库:`git clone https://gitcode.com/gh_mirrors/wi/windows-defender-remover.git`
2. 进入目录:`cd windows-defender-remover`
3. 直接运行脚本:`Script_Run.bat`
- 使用代码签名(需要购买代码签名证书):
# 使用signtool签名可执行文件
signtool sign /f mycert.pfx /p password /t http://timestamp.digicert.com PowerRun.exe
2. Windows更新后工具失效
问题描述:Windows更新后,Defender相关服务被重新启用。
解决方案:
- 在README中提供更新后重新应用的说明
- 添加计划任务自动检测并重新应用设置:
# 创建计划任务的PowerShell代码
$action = New-ScheduledTaskAction -Execute "C:\Path\To\Script_Run.bat" -Argument "y"
$trigger = New-ScheduledTaskTrigger -AtLogOn
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName "DefenderRemover" -Action $action -Trigger $trigger -Principal $principal -Settings $settings
发布后维护与迭代
用户反馈收集与处理
建立反馈处理流程:
flowchart TD
A[用户提交Issue] --> B[分类处理]
B --> C[bug报告]
B --> D[功能请求]
B --> E[使用问题]
C --> F[确认可复现性]
F --> G[分配开发人员]
G --> H[修复并提交PR]
H --> I[合并到develop分支]
I --> J[包含在下一版本]
D --> K[评估可行性]
K -->|可行| L[加入开发计划]
K -->|不可行| M[关闭并说明原因]
E --> N[提供解决方案]
N --> O[更新FAQ或文档]
版本迭代计划
采用6-8周的迭代周期,每个版本包含:
- 2-3个主要功能改进
- 5-8个bug修复
- 文档和使用说明更新
未来版本路线图:
-
短期(v13.0):
- 添加图形用户界面
- 增强系统恢复功能
- 改进日志记录系统
-
中期(v14.0):
- 添加静默安装选项
- 实现系统状态备份功能
- 支持命令行自定义配置
-
长期(v15.0):
- 开发独立的卸载程序
- 添加实时监控防御功能
- 支持多语言界面
社区维护策略
-
文档维护:
- 保持README.md更新
- 维护详细的Wiki
- 定期更新FAQ
-
社区互动:
- 定期回复Issue
- 每月发布项目进展报告
- 鼓励用户贡献代码和文档
-
贡献者管理:
- 建立贡献指南(CONTRIBUTING.md)
- 实施代码审查流程
- 认可活跃贡献者
总结
本文详细介绍了Windows Defender移除工具从开发到发布的完整流程,包括开发环境搭建、代码开发与版本控制、构建流程解析、测试与验证策略、版本发布步骤、常见问题解决方案以及发布后维护与迭代。通过遵循本文所述的流程和最佳实践,可以确保开源项目的高质量发布和持续维护。
关键要点回顾
- 采用Git Flow工作流进行版本控制
- 模块化设计提高代码可维护性
- 全面的测试策略确保工具稳定性
- 详细的发布流程保证用户体验
- 建立反馈机制持续改进项目
下期预告
下一篇文章将详细介绍"Windows Defender移除工具的高级使用技巧",包括如何自定义移除选项、系统优化建议以及高级故障排除方法。
如果觉得本文对你有帮助,请点赞、收藏并关注项目以获取最新更新!
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00