首页
/ 最完整的Windows Defender移除工具发布指南:从开发到Release全流程

最完整的Windows Defender移除工具发布指南:从开发到Release全流程

2026-02-05 04:47:37作者:劳婵绚Shirley

你还在为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+ 注册表编辑与测试 官方网站

环境搭建步骤

  1. 安装Git并配置用户信息:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global core.autocrlf true
  1. 克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/wi/windows-defender-remover.git
cd windows-defender-remover
  1. 安装必要的PowerShell模块:
Install-Module -Name PSReadLine -Force
Install-Module -Name PSScriptAnalyzer -Force
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  1. 验证开发环境:
# 检查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: 修复bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 代码重构
  • test: 添加测试
  • chore: 构建过程或辅助工具变动

示例:

git commit -m "feat: 添加Windows 11 22H2支持"
git commit -m "fix: 修复注册表项删除不彻底问题"
git commit -m "docs: 更新README中的安装说明"

核心功能开发详解

以注册表操作模块开发为例,展示完整开发流程:

  1. 创建新功能分支:
git checkout develop
git pull
git checkout -b feature/registry-optimization
  1. 开发注册表统一处理脚本:
# @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
  1. 提交并推送分支:
git add @Management/RegistryUnifier.ps1
git commit -m "feat: 添加注册表统一处理脚本"
git push -u origin feature/registry-optimization
  1. 创建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文件来修改系统设置,这些文件按功能模块化组织:

  1. Remove_defender_moduled目录包含细粒度的注册表修改:

    • DisableAntivirusProtection.reg:禁用防病毒保护
    • DisableDefenderPolicies.reg:禁用Defender策略
    • RemoveDefenderTasks.reg:移除Defender任务计划
    • RemoveServices.reg:移除Defender服务
  2. 注册表文件导入流程:

:: 导入注册表文件的代码片段
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"
  1. 注册表修改验证方法:
# 检查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. 观察行为
无需交互直接执行完全移除流程

回归测试清单

每次版本更新必须执行的关键测试:

  1. 系统启动速度测试
  2. Windows更新兼容性测试
  3. 第三方安全软件兼容性测试
  4. 系统恢复功能测试
  5. 性能影响评估

自动化测试实现

使用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

版本号更新位置:

  1. Script_Run.bat中的defenderremoverver变量
  2. README.md中的版本信息
  3. 发布标签

构建发布包

使用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发布流程

  1. 创建发布标签:
git tag -a v12.8.4 -m "Release version 12.8.4"
git push origin v12.8.4
  1. 准备发布说明(RELEASE_NOTES.md):
## Windows Defender Remover v12.8.4

### 新功能
- 添加对Windows 11 22H2的完整支持
- 优化注册表修改逻辑,提高执行速度
- 新增静默安装参数

### 改进
- 改进文件删除算法,减少残留文件
- 优化重启前的清理流程
- 增强错误处理和日志记录

### 修复
- 修复在某些系统上UAC禁用不完全的问题
- 修复Windows更新后Defender服务重新启用的问题
- 修复64位系统上的注册表权限问题

### 使用方法
1. 下载压缩包并解压
2. 以管理员身份运行Script_Run.bat
3. 根据提示选择操作模式
  1. 使用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:使用源代码
1. 克隆仓库:`git clone https://gitcode.com/gh_mirrors/wi/windows-defender-remover.git`
2. 进入目录:`cd windows-defender-remover`
3. 直接运行脚本:`Script_Run.bat`
  1. 使用代码签名(需要购买代码签名证书):
# 使用signtool签名可执行文件
signtool sign /f mycert.pfx /p password /t http://timestamp.digicert.com PowerRun.exe

2. Windows更新后工具失效

问题描述:Windows更新后,Defender相关服务被重新启用。

解决方案

  1. 在README中提供更新后重新应用的说明
  2. 添加计划任务自动检测并重新应用设置:
# 创建计划任务的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修复
  • 文档和使用说明更新

未来版本路线图

  1. 短期(v13.0)

    • 添加图形用户界面
    • 增强系统恢复功能
    • 改进日志记录系统
  2. 中期(v14.0)

    • 添加静默安装选项
    • 实现系统状态备份功能
    • 支持命令行自定义配置
  3. 长期(v15.0)

    • 开发独立的卸载程序
    • 添加实时监控防御功能
    • 支持多语言界面

社区维护策略

  1. 文档维护

    • 保持README.md更新
    • 维护详细的Wiki
    • 定期更新FAQ
  2. 社区互动

    • 定期回复Issue
    • 每月发布项目进展报告
    • 鼓励用户贡献代码和文档
  3. 贡献者管理

    • 建立贡献指南(CONTRIBUTING.md)
    • 实施代码审查流程
    • 认可活跃贡献者

总结

本文详细介绍了Windows Defender移除工具从开发到发布的完整流程,包括开发环境搭建、代码开发与版本控制、构建流程解析、测试与验证策略、版本发布步骤、常见问题解决方案以及发布后维护与迭代。通过遵循本文所述的流程和最佳实践,可以确保开源项目的高质量发布和持续维护。

关键要点回顾

  • 采用Git Flow工作流进行版本控制
  • 模块化设计提高代码可维护性
  • 全面的测试策略确保工具稳定性
  • 详细的发布流程保证用户体验
  • 建立反馈机制持续改进项目

下期预告

下一篇文章将详细介绍"Windows Defender移除工具的高级使用技巧",包括如何自定义移除选项、系统优化建议以及高级故障排除方法。

如果觉得本文对你有帮助,请点赞、收藏并关注项目以获取最新更新!

登录后查看全文
热门项目推荐
相关项目推荐