文章目录1 - 概述2 - 场景功能详解2.1 - 应用向设备提交自身软件信息2.2 - 查询设备中防病毒软件信息列表2.3 - 启停设备自带的安全防护服务2.4 - 能力全景梳理3 - 核心数据结构与枚举3.1 - SecurityAntivirus_Antivirus结构体3.2 - 错误码说明4 - 接口详解与使用步骤4.1 - 开发环境准备4.2 - EDR应用的注册与更新4.3 - 查询三方防病毒软件信息4.4 - MDM应用启停设备自带安全防护服务4.5 - 完整使用示例集成上述能力的EDR应用5 - 应用场景剖析5.1 - 企业设备管理5.2 - 零信任安全架构落地5.3 - 安全应用生态协同6 - 注意事项7 - 总结1 - 概述随着移动终端安全威胁日益复杂化终端检测与响应Endpoint Detection and ResponseEDR类应用在系统安全防护体系中的地位愈发重要。HarmonyOS 6.0在Device Security Kit设备安全服务中新增了**病毒防护服务管理VirusProtectionServiceManager**场景这是鸿蒙安全能力矩阵的一次重要扩展。在此之前Device Security Kit已覆盖应用设备状态检测、安全检测、可信应用服务、数字盾服务、业务风险检测、安全审计、防窥保护和反诈选择器等多个安全场景。病毒防护服务管理场景的加入使得系统安全能力从系统级防护向第三方安全服务生态协同迈进了一大步。该场景提供了三个核心能力应用向设备提交自身软件信息、查询设备中防病毒软件信息列表、启停设备自带的安全防护服务。这意味着鸿蒙系统不仅在底层构建了星盾安全架构还通过开放标准化的病毒防护服务管理接口C API让EDR应用能够真正融入系统安全体系协同工作为用户提供多层次、可管理、可联动的设备安全防护体验。本文将从场景设计、API使用细则到实际代码实现对这一新增能力进行详细解析。2 - 场景功能详解病毒防护服务管理能力目前主要在PC/2in1设备上提供支持系统能力标识为SystemCapability.Security.SecurityAntivirus起始版本为6.0.0(20)。2.1 - 应用向设备提交自身软件信息这一能力本质上是建立一套安全应用注册与信息同步机制。第三方EDR应用可以通过API向HarmonyOS安全防护服务注册自己并定期更新自身状态信息。注册和信息更新主要解决两个问题身份可信性只有获得ohos.permission.REGISTER_ANTIVIRUS权限的应用才能注册为防病毒应用确保接入的安全应用经过了系统审核。状态可感知系统需要通过注册应用上报的信息知道当前有哪些EDR应用在运行、版本是否最新、防护开关是否开启等。EDR应用注册后系统会将此类应用纳入统一的安全服务管理体系。当用户或管理员需要查看设备安全状态时可以获得完整的安全防护视图——包括系统自带防护和第三方EDR应用状态。2.2 - 查询设备中防病毒软件信息列表查询能力面向两类场景对应两类不同角色的应用1零信任应用查询所有三方EDR注册信息零信任安全架构的核心是永不信任始终验证。在此架构下安全态势感知应用需要知道设备上究竟有哪些安全防护措施在工作才能做出准确的信任评估。通过HMS_SecurityAntivirus_QueryAntivirus接口需ohos.permission.MANAGE_ANTIVIRUS权限零信任应用可以获取设备上所有已注册的第三方EDR应用清单包括每个应用的包名、版本号、防护开关状态等信息。2MDM应用查询系统防病毒功能状态在企业设备管理场景中MDM应用需要监管所有用户的设备安全状态。HMS_SecurityAntivirus_QueryPreinstalledAntivirus接口专门面向MDM应用设计可以查询所有用户的系统防病毒功能状态需ohos.permission.MANAGE_PREINSTALLED_ANTIVIRUS权限。2.3 - 启停设备自带的安全防护服务设备自带的安全防护服务是指HarmonyOS系统预置的内置防病毒能力。这一能力的开放主要面向企业设备管理场景。将启停控制权开放给MDM应用核心价值在于统一策略管控企业IT管理员可以根据安全策略统一控制所有终端设备的系统防病毒功能状态。例如在安装了更完善的企业级EDR方案的设备上可以关闭系统内置功能以避免资源重复和策略冲突在需要基础的最小安全基线保障的场景下则确保系统内置防护始终开启。分用户精准管理鸿蒙系统支持多用户场景如平板设备上的多用户空间。EnablePreinstalledAntivirusByAccount和DisablePreinstalledAntivirusByAccount接口允许MDM应用针对特定用户ID进行精准控制。2.4 - 能力全景梳理为便于整体把握以下按照常用场景分类梳理各接口的定位EDR应用的自我管理需ohos.permission.REGISTER_ANTIVIRUSRegisterAntivirus初次注册UpdateAntivirus更新自身信息版本号、开关状态等UnregisterAntivirus注销零信任应用的态势感知需ohos.permission.MANAGE_ANTIVIRUSQueryAntivirus查询所有已注册的三方EDR应用列表MDM应用的设备管控需ohos.permission.MANAGE_PREINSTALLED_ANTIVIRUSQueryPreinstalledAntivirus查询系统防病毒功能状态所有用户EnablePreinstalledAntivirus/DisablePreinstalledAntivirus启停所有用户的防病毒功能EnablePreinstalledAntivirusByAccount/DisablePreinstalledAntivirusByAccount针对特定用户进行启停控制3 - 核心数据结构与枚举3.1 - SecurityAntivirus_Antivirus结构体该结构体用于承载EDR应用的核心信息是注册、更新和查询操作中传递信息的基本单位包含以下字段包名bundleName应用的唯一标识用于系统的身份识别和权限校验。当前版本号便于系统检测EDR应用的更新状态。上次更新时间记录信息最后更新的时间戳。病毒防护开关状态表示该EDR应用的防护功能是否处于启用状态。用户ID在多用户设备上标识所属用户。3.2 - 错误码说明返回的错误码设计较为精细便于调用方针对性处理0 (SECURITY_ANTIVIRUS_SUCCESS)接口调用成功。201 (SECURITY_ANTIVIRUS_PERMISSION_NOT_GRANTED)权限校验失败通常是因为调用方未声明必需的权限如ohos.permission.REGISTER_ANTIVIRUS。1019900001 (SECURITY_ANTIVIRUS_PARAM_INVALID)传入参数不符合规范例如空指针或结构体字段格式错误。1019900002 (SECURITY_ANTIVIRUS_NO_REGISTER)当前应用未在病毒防护系统中注册常见于执行更新操作时尚未完成注册。1019900003 (SECURITY_ANTIVIRUS_INNER_ERROR)系统服务内部发生异常需要重试或检查系统状态。4 - 接口详解与使用步骤在HarmonyOS NEXT应用开发环境中使用病毒防护服务管理能力建议按以下步骤完成接入。4.1 - 开发环境准备在module.json5中声明所需权限{module:{requestPermissions:[{name:ohos.permission.REGISTER_ANTIVIRUS,reason:$string:antivirus_register_reason,usedScene:{abilities:[EntryAbility],when:always}},{name:ohos.permission.MANAGE_ANTIVIRUS,reason:$string:antivirus_query_reason},{name:ohos.permission.MANAGE_PREINSTALLED_ANTIVIRUS,reason:$string:mdm_antivirus_reason}]}}此外需要在CMakeLists.txt中链接NDK库target_link_libraries(entry PUBLIC libsecurityantivirus_ndk.z.so)在源文件中引入头文件#includesecurity_antivirus.h4.2 - EDR应用的注册与更新对于第三方EDR应用标准接入流程如下第一步注册在应用初始化阶段如Ability启动时调用HMS_SecurityAntivirus_RegisterAntivirus向系统注册。#includesecurity_antivirus.h#includestdio.hvoidRegisterMyAntivirus(constchar*bundleName){SecurityAntivirus_ErrCode resultHMS_SecurityAntivirus_RegisterAntivirus(bundleName);switch(result){caseSECURITY_ANTIVIRUS_SUCCESS:printf(EDR应用注册成功: %s\n,bundleName);break;caseSECURITY_ANTIVIRUS_PERMISSION_NOT_GRANTED:printf(权限不足请检查ohos.permission.REGISTER_ANTIVIRUS权限\n);break;caseSECURITY_ANTIVIRUS_PARAM_INVALID:printf(包名参数无效\n);break;caseSECURITY_ANTIVIRUS_INNER_ERROR:printf(系统内部错误请稍后重试\n);break;default:printf(未知错误码: %d\n,result);break;}}注册成功后系统会将此EDR应用纳入安全管理体系后续查询操作可以检索到该应用的信息。第二步定期更新信息随着应用版本升级或用户操作如在应用内开启/关闭防护开关应及时调用HMS_SecurityAntivirus_UpdateAntivirus同步状态。voidUpdateMyAntivirusInfo(constchar*bundleName,constchar*version,int64_tlastUpdateTime,bool isEnabled,int32_tuserId){SecurityAntivirus_Antivirus antivirusInfo;antivirusInfo.bundleNamebundleName;antivirusInfo.versionversion;antivirusInfo.lastUpdateTimelastUpdateTime;antivirusInfo.isEnabledisEnabled;antivirusInfo.userIduserId;SecurityAntivirus_ErrCode resultHMS_SecurityAntivirus_UpdateAntivirus(antivirusInfo);if(resultSECURITY_ANTIVIRUS_SUCCESS){printf(EDR应用信息更新成功\n);}elseif(resultSECURITY_ANTIVIRUS_NO_REGISTER){printf(应用尚未注册请先调用RegisterAntivirus\n);}else{printf(更新失败错误码: %d\n,result);}}常见触发更新信息的场景包括应用版本升级version字段变化用户在应用内开启/关闭病毒防护开关isEnabled字段变化应用定期上报自身状态lastUpdateTime定期更新第三步注销当EDR应用被卸载时系统会自动处理资源释放。但如果应用需要在运行时主动退出防病毒服务场景可以调用HMS_SecurityAntivirus_UnregisterAntivirus主动从系统中注销。voidUnregisterMyAntivirus(constchar*bundleName){SecurityAntivirus_ErrCode resultHMS_SecurityAntivirus_UnregisterAntivirus(bundleName);if(resultSECURITY_ANTIVIRUS_SUCCESS){printf(EDR应用已从病毒防护系统注销\n);}}4.3 - 查询三方防病毒软件信息零信任管理类应用可以通过查询接口获取设备上所有已注册的第三方EDR应用状态作为业务风险评估的依据。#includestdlib.hvoidQueryAllAntivirusApps(void){SecurityAntivirus_Antivirus**listNULL;uint32_tlength0;SecurityAntivirus_ErrCode resultHMS_SecurityAntivirus_QueryAntivirus(list,length);if(resultSECURITY_ANTIVIRUS_PERMISSION_NOT_GRANTED){printf(权限不足请检查ohos.permission.MANAGE_ANTIVIRUS权限\n);return;}if(result!SECURITY_ANTIVIRUS_SUCCESS){printf(查询失败错误码: %d\n,result);return;}// 遍历EDR应用列表for(uint32_ti0;ilength;i){SecurityAntivirus_Antivirus*applist[i];if(appNULL)continue;printf(应用 %d:\n,i1);printf( 包名: %s\n,app-bundleName);printf( 版本: %s\n,app-version);printf( 最后更新: %lld\n,app-lastUpdateTime);printf( 防护状态: %s\n,app-isEnabled?已启用:已停用);printf( 用户ID: %d\n,app-userId);printf(\n);}// 释放资源注意list的内存管理遵循NDK约定// 参照官方文档中关于内存释放的具体要求}在实际业务中零信任应用可以根据查询结果动态调整信任策略。例如检测到关键EDR应用长期未更新lastUpdateTime过旧可降低设备信任等级。发现所有EDR应用防护开关均处于关闭状态时可向用户发出安全提醒。4.4 - MDM应用启停设备自带安全防护服务MDM类应用通过以下接口实现对系统防病毒功能的管控按用户精准控制适用于多用户设备场景如企业共享平板管理员可以根据不同用户身份或部门执行差异化安全策略。#includeinttypes.hvoidEnableAntivirusForUser(int32_taccountId){SecurityAntivirus_ErrCode resultHMS_SecurityAntivirus_EnablePreinstalledAntivirusByAccount(accountId);if(resultSECURITY_ANTIVIRUS_SUCCESS){printf(用户 %d 的系统防病毒功能已启用\n,accountId);}elseif(resultSECURITY_ANTIVIRUS_PERMISSION_NOT_GRANTED){printf(权限不足请检查ohos.permission.MANAGE_PREINSTALLED_ANTIVIRUS权限\n);}else{printf(启用失败错误码: %d\n,result);}}voidDisableAntivirusForUser(int32_taccountId){SecurityAntivirus_ErrCode resultHMS_SecurityAntivirus_DisablePreinstalledAntivirusByAccount(accountId);if(resultSECURITY_ANTIVIRUS_SUCCESS){printf(用户 %d 的系统防病毒功能已禁用\n,accountId);}}全局控制影响设备上的所有用户voidEnableAntivirusForAllUsers(void){SecurityAntivirus_ErrCode resultHMS_SecurityAntivirus_EnablePreinstalledAntivirus();if(resultSECURITY_ANTIVIRUS_SUCCESS){printf(全部用户的系统防病毒功能已启用\n);}}voidDisableAntivirusForAllUsers(void){SecurityAntivirus_ErrCode resultHMS_SecurityAntivirus_DisablePreinstalledAntivirus();if(resultSECURITY_ANTIVIRUS_SUCCESS){printf(全部用户的系统防病毒功能已禁用\n);}}查询系统防病毒状态voidQueryPreinstalledAntivirusStatus(void){SecurityAntivirus_Antivirus**listNULL;uint32_tlength0;SecurityAntivirus_ErrCode resultHMS_SecurityAntivirus_QueryPreinstalledAntivirus(list,length);if(result!SECURITY_ANTIVIRUS_SUCCESS){printf(查询失败错误码: %d\n,result);return;}for(uint32_ti0;ilength;i){SecurityAntivirus_Antivirus*statuslist[i];printf(用户 %d: 系统防病毒功能状态 %s\n,status-userId,status-isEnabled?已启用:已停用);}}4.5 - 完整使用示例集成上述能力的EDR应用在实际开发中EDR类应用可以将注册、更新、注销等操作有机整合。以下是一个简化的生命周期管理示例// 应用启动时的初始化逻辑示例voidOnApplicationStart(constchar*bundleName){// 1. 向系统注册自身RegisterMyAntivirus(bundleName);// 2. 同步初始状态信息UpdateMyAntivirusInfo(bundleName,// 包名3.2.1,// 当前版本号GetCurrentTimestamp(),// 当前时间戳true,// 防护开关状态假设已开启100// 当前用户ID);// 3. 注册信息变更监听如用户在应用内切换防护状态SubscribeToSettingsChange([](bool newEnabled){UpdateMyAntivirusInfo(bundleName,3.2.1,GetCurrentTimestamp(),newEnabled,100);});}// 应用退出时的清理逻辑voidOnApplicationExit(constchar*bundleName){UnregisterMyAntivirus(bundleName);}5 - 应用场景剖析5.1 - 企业设备管理企业IT管理员可以通过定制MDM应用实现终端安全策略的统一配置。例如对研发部门设备强制启用系统防病毒功能设定最低安全基线。对安装了企业自研EDR方案的设备选择关闭系统内置功能避免双引擎带来的性能损耗和告警冗余。针对不同用户空间如工作空间和个人空间执行不同的安全策略组合——系统防护全量开启第三方EDR按需启用。EnablePreinstalledAntivirusByAccount和DisablePreinstalledAntivirusByAccount接口的存在使这种精细化管控成为可能。5.2 - 零信任安全架构落地零信任安全的核心原则之一就是持续验证设备安全状态。通过查询接口零信任应用可以实时获取设备上已注册的EDR应用列表和各自防护开关状态结合其他安全检测结果如系统完整性检测、恶意网址检测等做出综合的信任评分。以移动支付类应用为例在发起大额交易前可以检查系统完整性检测结果——设备是否被篡改或越狱。查询当前系统防病毒功能状态。查询所有三方EDR应用的防护状态。综合判断设备环境是否安全根据风险等级决定是否允许交易、是否强制进行额外身份验证。这种多维度安全评估机制能够有效防范黑产团队通过越狱设备、篡改系统或植入恶意软件发起的攻击。5.3 - 安全应用生态协同此能力的开放还为EDR应用之间的生态协同提供了基础设施。鸿蒙系统不再是一个仅面向用户提供安全功能终端的平台而是构建了一个可被治理、可被感知、可被联动的企业级安全防护底座。EDR应用、零信任应用和MDM应用三方协同形成了从单点防护到全局治理的完整闭环。6 - 注意事项使用病毒防护服务管理能力时需注意以下几点权限声明必须在module.json5中明确声明相应权限不同操作所需的权限不同REGISTER_ANTIVIRUS / MANAGE_ANTIVIRUS / MANAGE_PREINSTALLED_ANTIVIRUS系统会进行严格的权限校验。任何缺失或越权调用都将收到SECURITY_ANTIVIRUS_PERMISSION_NOT_GRANTED错误。先注册后更新调用UpdateAntivirus之前必须先完成注册否则会返回SECURITY_ANTIVIRUS_NO_REGISTER错误。信息同步频率建议在状态变化时主动调用更新接口不必频繁无意义地刷新但lastUpdateTime字段可以作为系统判断EDR应用是否活跃的参考依据。设备支持范围病毒防护服务管理能力当前主要在PC/2in1设备上提供支持具体设备限制请参考官方文档。内存管理查询操作返回的列表涉及内存分配务必按照NDK开发规范正确释放内存资源避免内存泄漏。错误重试机制对于SECURITY_ANTIVIRUS_INNER_ERROR等临时性错误建议实现指数退避重试策略避免因系统服务暂时繁忙而导致功能异常。7 - 总结鸿蒙6.0 Device Security Kit新增的病毒防护服务管理场景标志着鸿蒙安全能力迈入了生态协同的新阶段。从技术架构上看这一能力的设计体现了三个关键考量第一标准先行。通过C API的方式向第三方EDR应用开放接入入口同时以精细化的权限体系REGISTER_ANTIVIRUS、MANAGE_ANTIVIRUS、MANAGE_PREINSTALLED_ANTIVIRUS确保接入方身份可信。开发者无需关心底层实现细节只需调用标准接口即可完成安全应用的身份注册与信息上报。第二角色分离。EDR应用、零信任应用、MDM应用在这一体系中有各自清晰的定位和职责边界。EDR应用负责自我注册和信息上报零信任应用负责态势感知和风险评估MDM应用负责全局策略下发与执行。这种职责分离既保证了体系的灵活性也符合企业安全管理的合规要求。第三企业级设计。多用户支持、按账户启停、全局管控等能力的开放使这一特性天然适用于企业设备管理场景。无论是教育平板的分用户管控、金融柜台的终端安全基线强控还是政企设备的安全策略统一分发都能找到对应的接口支持。与Device Security Kit中其他安全能力如系统完整性检测、恶意网址检测等相比病毒防护服务管理解决的不是具体威胁检测的问题而是安全能力如何协同的问题。它处在鸿蒙安全体系的一个承上启下的位置——向下感知所有活跃的EDR应用状态向上为零信任策略决策层提供数据输入向外为MDM管理层提供控制出口。对于鸿蒙开发者而言精确理解这一能力的设计逻辑和使用规范可以为应用的安全合规设计提供新的技术思路。无论是希望将产品接入鸿蒙安全体系的EDR厂商还是正在构建零信任架构的安全团队病毒防护服务管理场景都值得深入关注。感谢各位大佬支持互三啦