取得系统防病毒软件和防火墙的信息

VC之获得系统安装的反病毒软件[Using WMI in C++] 在学习本文前,你需要一点点的VBS基础,WMI了解常识,COM接口皮毛就行。 今天的问题是,如何获得系统中安装的杀毒软件?有人会说遍历注册表之类的。其实用不着这么麻烦。每个正式的AV(Anti-Virus)软件,都要向系统注册自己。通过查看WMI中的/root/SecurityCenter这个名称空间,我们就能知道其中装了那些反病毒产品。我们来看一段Vbs代码:strCompu 阅读详情
 
  1. #define _WIN32_DCOM
  2. #include <iostream>
  3. using namespace std;
  4. #include <comdef.h>
  5. #include <Wbemidl.h>
  6. # pragma comment(lib, "wbemuuid.lib")
  7. IWbemLocator *pLoc = NULL;  
  8. IWbemServices *pSvc = NULL;
  9. IEnumWbemClassObject* pEnumerator = NULL;
  10. IWbemClassObject *pclsObj = NULL;
  11. //http://msdn.microsoft.com/en-us/library/aa390423(VS.85).aspx
  12. bool IniWMI()
  13. { 
  14.     HRESULT hres;
  15.     // Initialize COM. ------------------------------------------
  16.     hres =  CoInitializeEx(0, COINIT_MULTITHREADED); 
  17.     if (FAILED(hres))
  18.     {
  19.         cout << "Failed to initialize COM library. Error code = 0x" 
  20.             << hex << hres << endl;
  21.         return NULL; 
  22.     }
  23.     // Set general COM security levels --------------------------
  24.     hres =  CoInitializeSecurity(
  25.         NULL, 
  26.         -1,                          // COM authentication
  27.         NULL,                        // Authentication services
  28.         NULL,                        // Reserved
  29.         RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication 
  30.         RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation  
  31.         NULL,                        // Authentication info
  32.         EOAC_NONE,                   // Additional capabilities 
  33.         NULL                         // Reserved
  34.         );
  35.                       
  36.     if (FAILED(hres))
  37.     {
  38.         cout << "Failed to initialize security. Error code = 0x" 
  39.             << hex << hres << endl;
  40.         CoUninitialize();
  41.         return NULL; 
  42.     }
  43.     
  44.     // Obtain the initial locator to WMI -------------------------
  45.     //IWbemLocator *pLoc = NULL;
  46.     hres = CoCreateInstance(
  47.         CLSID_WbemLocator,             
  48.         0, 
  49.         CLSCTX_INPROC_SERVER, 
  50.         IID_IWbemLocator, (LPVOID *) &pLoc);
  51.     if (FAILED(hres))
  52.     {
  53.         cout << "Failed to create IWbemLocator object."
  54.             << " Err code = 0x"
  55.             << hex << hres << endl;
  56.         CoUninitialize();
  57.         return NULL; 
  58.     }
  59.     return true;
  60. }
  61. void ReleaseWMI()
  62. {
  63.     if( NULL!=pSvc)  pSvc->Release();
  64.     if( NULL!=pLoc)  pLoc->Release();
  65.     if( NULL!=pEnumerator)  pEnumerator->Release();
  66.     if( NULL!=pclsObj)  pclsObj->Release();
  67.     CoUninitialize();
  68. }
  69. //bool GetInfoFromWMI( std::string strPath, std::string strSQL )
  70. bool GetInfoFromWMI()
  71. {
  72.     HRESULT hres;
  73.     // Connect to WMI through the IWbemLocator::ConnectServer method
  74.     hres = pLoc->ConnectServer(
  75.          //_bstr_t(L"ROOT//CIMV2"), // Object path of WMI namespace
  76.          _bstr_t(L"root//SecurityCenter"), // Object path of WMI namespace
  77.          //_bstr_t( strPath.c_str() ), // Object path of WMI namespace
  78.          NULL,                    // User name. NULL = current user
  79.          NULL,                    // User password. NULL = current
  80.          0,                       // Locale. NULL indicates current
  81.          NULL,                    // Security flags.
  82.          0,                       // Authority (e.g. Kerberos)
  83.          0,                       // Context object 
  84.          &pSvc                    // pointer to IWbemServices proxy
  85.          );
  86.     
  87.     
  88.     if (FAILED(hres))
  89.     {
  90.         cout << "Could not connect. Error code = 0x" 
  91.              << hex << hres << endl;
  92.         pLoc->Release();     
  93.         CoUninitialize();
  94.         return false;   
  95.     }
  96.     cout << "Connected to ROOT//CIMV2 WMI namespace" << endl;
  97.     // Set security levels on the proxy -------------------------
  98.     hres = CoSetProxyBlanket(
  99.        pSvc,                        // Indicates the proxy to set
  100.        RPC_C_AUTHN_WINNT,           // RPC_C_AUTHN_xxx
  101.        RPC_C_AUTHZ_NONE,            // RPC_C_AUTHZ_xxx
  102.        NULL,                        // Server principal name 
  103.        RPC_C_AUTHN_LEVEL_CALL,      // RPC_C_AUTHN_LEVEL_xxx 
  104.        RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
  105.        NULL,                        // client identity
  106.        EOAC_NONE                    // proxy capabilities 
  107.     );
  108.     if (FAILED(hres))
  109.     {
  110.         cout << "Could not set proxy blanket. Error code = 0x" 
  111.             << hex << hres << endl;
  112.         ReleaseWMI();
  113.         return false;
  114.     }
  115.     // Use the IWbemServices pointer to make requests of WMI ----
  116.     hres = pSvc->ExecQuery(
  117.         //bstr_t("WQL"), 
  118.         //bstr_t("SELECT * FROM Win32_OperatingSystem"),
  119.         _bstr_t(L"WQL"),
  120.         //_bstr_t(L"Select * From AntiVirusProduct"),
  121.         _bstr_t(L"Select * from FirewallProduct"),
  122.         //bstr_t( strSQL.c_str() ),
  123.         WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
  124.         NULL,
  125.         &pEnumerator);
  126.     
  127.     if (FAILED(hres))
  128.     {
  129.         cout << "Query for operating system name failed."
  130.             << " Error code = 0x" 
  131.             << hex << hres << endl;
  132.         ReleaseWMI();
  133.         return false;
  134.     }
  135.     return true;
  136. }
  137. int main(int argc, char **argv)
  138. {
  139.     if ( false == IniWMI() ) return 1;
  140.     //if ( false == GetInfoFromWMI( "root//SecurityCenter",
  141.     //                          "Select * from FirewallProduct" ) 
  142.     //  ) return 1;
  143.     if ( false == GetInfoFromWMI() ) return 1;
  144.     // Get the data from the query in step 6 -------------------
  145.     ULONG uReturn = 0;
  146.    
  147.     while (pEnumerator)
  148.     {
  149.         HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, 
  150.             &pclsObj, &uReturn);
  151.         if(0 == uReturn)
  152.         {
  153.             break;
  154.         }
  155.         VARIANT vtProp;
  156.         //{
  157.         //  // Get the value of the Name property
  158.         //  hr = pclsObj->Get(L"DisplayName", 0, &vtProp, 0, 0);
  159.         //  //wcout << " OS Name : " << vtProp.bstrVal << endl;
  160.         //  wcout << " Virus Name : " << vtProp.bstrVal << endl;
  161.         //  
  162.         //  hr = pclsObj->Get(L"VersionNumber", 0, &vtProp, 0, 0);
  163.         //  //wcout << " OS Name : " << vtProp.bstrVal << endl;
  164.         //  wcout << " Version Number : " << vtProp.bstrVal << endl;        
  165.         //  
  166.         //  hr = pclsObj->Get(L"CompanyName", 0, &vtProp, 0, 0);
  167.         //  //wcout << " OS Name : " << vtProp.bstrVal << endl;
  168.         //  wcout << " CompanyName : " << vtProp.bstrVal << endl;
  169.         //  
  170.         //  //hr = pclsObj->Get(L"ProductUptoDate", 0, &vtProp, 0, 0);
  171.         //  ////wcout << " OS Name : " << vtProp.bstrVal << endl;
  172.         //  //wcout << " ProductUptoDate : " << vtProp.bstrVal << endl;
  173.         //  
  174.         //  //hr = pclsObj->Get(L"pathToUpdateUI", 0, &vtProp, 0, 0);
  175.         //  ////wcout << " OS Name : " << vtProp.bstrVal << endl;
  176.         //  //wcout << " pathToUpdateUI : " << vtProp.bstrVal << endl;
  177.         //}
  178.         {
  179.             // Get the value of the Name property
  180.             hr = pclsObj->Get(L"displayName", 0, &vtProp, 0, 0);
  181.             //wcout << " OS Name : " << vtProp.bstrVal << endl;
  182.             wcout << " Virus Name : " << vtProp.bstrVal << endl;
  183.         }
  184.             
  185.         VariantClear(&vtProp);
  186.     }
  187.     // Cleanup
  188.     //pEnumerator->Release();
  189.     //pclsObj->Release();
  190.     //pSvc->Release();
  191.     //pLoc->Release();
  192.     //CoUninitialize();
  193.     ReleaseWMI();
  194.     return 0;   // Program successfully completed.
  195.     
  196. }

 

参考:

MSDN Sample

http://msdn.microsoft.com/en-us/library/aa390423(VS.85).aspx

http://msdn.microsoft.com/en-us/library/aa390423(VS.85).aspx

 

学习笔记 -- 使用WMI获得系统信息

http://blog.youkuaiyun.com/flood1984/archive/2007/12/03/1913904.aspx

WMI Administrative Tools

http://www.pczone.com.tw/vbb3/thread/28/139363/

C#

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/99013012-a227-4edc-9c64-832c4287718d/

信息系统安全题库 小张.小李.小王都是该组织新入职的安全员,小张认为V3的脆弱性最强,应优先采取措施以降低V3的脆弱性,小李则认为T5威胁出现频率最高,应优先采取措施以降低T5出现的频率,小王则认为资产A1比A2重要,所以应优先采取措施保护资产A1。1、小李大学毕业后,上岗工作两周,收到了给某服务器安装操作系统的任务,小李认为可以先按默认配置安装,安装好后对不必要的服务.应用和协议,可以禁用或卸载,同样可以保证操作系统的安全性。安装最新的安全更新:安全更新包含操作系统最新的补丁和修复程序,可有效地提高系统的安全性。 阅读详情

相关推荐

ISTQB-AL TA/TTA连载系列11:安全保密性测试

[概述] 安全保密性测试,对于很多测试人员而言比较神秘。本文通过PC的安全性测试,阐述了安全保密性问题无时无刻不在我们的身边。  [正文] 现代社会越来越多的信息通过电子文档的形式保存在计算机中。很多企业员工都是在一个高度信息化的环境中工作,每人一台计算机已经是工作的必须配

郑文强的专栏 1777

获取win防火墙出入站规则(策略)c++

【代码】获取win防火墙出入站规则(策略)c++

qq_26200299的博客 916

VC++检测防火墙是否开启、判断程序是否加入防火墙白名单(附源码)

检测Windows防火墙是否开启、判断程序是否加入Windows防火墙白名单

dvlinker的技术专栏 1万+

学习笔记 -- 使用WMI获得系统信息

学习笔记 -- 使用WMI获得系统信息WMI是Windows 2K/XP管理系统的核心。WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。有了WMI,工具软件和脚本程序访问操作系统的不同部分时不需要使用

峰子的专栏 5088

防范网络键盘记录器:保护个人信息的重要措施

为了保护个人信息的安全,我们需要采取一系列的安全措施来防范网络键盘记录器的攻击。要保护自己,应该慎重打开来自未知发件人的邮件,尤其是附带的附件。下载和安装来自可信赖来源的软件是防范网络键盘记录器的关键。另外,注意阅读并理解软件安装过程中的提示和协议,确保没有额外安装不明软件。安装并定期更新可信赖的防病毒软件是防范网络键盘记录器的基本步骤。请注意,以上提供的代码示例仅为演示用途,实际应用中可能需要根据具体环境和需求进行适当的修改和扩展。然而,需要注意的是,没有绝对安全的系统,黑客攻击技术也在不断进化。

XvrgMatlab的博客 231

c# 系统检测防火墙,杀毒软件(与迅雷一样检测),系统更新(补丁下载模仿360,可以从官网下载)支持任何系统。此包含源码

c# 系统检测防火墙,杀毒软件(与迅雷一样检测),系统更新(补丁下载模仿360,可以从官网下载)支持任何系统。此包含源码, 亲自做的。如有错误,发到我的邮箱511522329@qq.com

使用WIN系统自带wmi测试工具查询杀毒软件信息

使用WIN系统自带wmi测试工具查询杀毒软件信息 1.在“运行”中,输入“wbemtest.exe”  2.单击“连接”,在输入框中输入ROOT\SecurityCenter2 3.点击“枚举类别”,选择“递归”  4.点击“查询”,在输入框中输入要测试的WQL语句:SELECT * FROM AntiVirusProduct 在Win8系统下

thanklife的专栏 2641

C++ 编写的杀毒软件

利用Visual C++ 编写的杀毒软件,中文介面

tryhackme——The Lay of the Land

它会在实时状态下进行扫描和静态分析,以查找应用程序代码中的可疑属性,或者检查其是否使用了不常见的 Windows 或系统 API。它是一种集中式用户管理方式,能够加密用户数据,并控制对网络的访问,包括用户、组、策略和计算机等。是一款预装在终端上的防病毒安全工具。如下图,域控被放在一个服务器专用的子网中(在图中显示为服务器网络),然后活动目录客户端位于一个独立的网络中,它们可以加入域并使用活动目录。基于主机的防火墙:它是一种安装并运行在主机机器上的安全工具,能够防止和阻止攻击者或红队成员的攻击尝试。

qq_55202378的博客 1091

形位公差标注的常见误区与优化策略

本文深入解析机械设计中形位公差标注的常见误区与优化策略,特别针对NX2406用户提供实用技巧。从标注冗余、基准选择到公差值设定等五大误区入手,结合工程图实例展示如何提升标注精度与效率,帮助工程师避免常见错误,优化设计流程,确保零件功能实现与制造可行性。

info6的博客 244

香橙派5使用RK3588S内置NPU加速yolov5推理,实时识别数字达到50fps

香橙派5采用了RK3588S,内置的NPU达到了6Tops的算力,博主这里记录一下自己的踩坑过程,好不容易做出来的不能以后忘记了(手动狗头)。这里博主还在B站上发布了效果视频,大家感兴趣的话可以看一下。其中解决了先验框标注位置不对,或者出现非常多的框的问题

weixin_51651698的博客 2万+

dbghelp.dll文件异常?教你如何识别和防止盗号攻击

dbghelp.dll 是一个Windows操作系统中的动态链接库文件,主要用于调试信息的支持。然而,恶意软件开发者有时会利用同名文件来执行恶意行为,如盗号攻击。

leleshengh520的博客 449

电路课设-音响分频器电路设计

(一)题目简介 1.一阶分频器电路设计 假定高音和低音扬声器均等效为 16 欧姆电阻,设计如图 2 的简单分频器电 路,要求高低频分界(两个滤波器的截止频率)为 5kHz。 1) 写出高音扬声器和低音扬声器电压对于 vs 的传递函数,确定电路中电 容 C 和电感 L 的元件值;2)利用 AC 频率扫描分析求出两个扬声器电压的频率响应曲线,验证计算 结果。用包含高低频成分的电压 vs 激励进行测量验证。 3)计算并利用 EWB 仿真证明从 vs 看进去的阻抗为一常数 16 欧姆。

weixin_53507617的博客 1万+

windows系统加固

本地安全组策略 账户策略 无用账户删除 避免提权 密码策略 设置密码输入次数不大于10次 错误到一定次数锁定该账户 避免弱口令密码 使用期限不大于90天 防火墙开启情况 出入站规则 无用账户删除 避免提权 系统版本查看 及时修补漏洞 高危端口查看 可以把端口换成不常用的端口 避免被攻击 安装防病毒软件 ...

Lu__xiao的博客 2079

椭圆曲线点加的推导公式(一)

椭圆曲线点加推导过程

qq_32100199的博客 1515

贝塞尔曲线原理--曲线生成--路径规划--matlab代码

贝塞尔曲线有着很多特殊的性质, 在图形设计和路径规划中应用都非常广泛, 在路径规划中贝塞尔曲线完全由其控制点决定其形状, n个控制点对应着n-1阶的贝塞尔曲线,并且可以通过递归的方式来绘制.

bob595078694的博客 1万+

不容忽视!如何用 9 个简单方法保护你的电脑免受病毒威胁?(非常详细)从零基础到精通,收藏这篇就够了!

通过安装防病毒软件、定期更新系统和软件、使用防火墙、谨慎点击不明链接、强密码和双重认证、定期备份数据等多重防护措施,可以大大降低病毒对电脑造成的损害。同时,用户的安全意识也是关键,避免掉入社交工程陷阱、合理使用可移动存储设备等,也是保障个人电脑安全的重要步骤。同时,启用双重认证功能,尤其是在重要的在线账户(如银行、社交媒体等)中,可以增加一层额外的安全保障。:对于使用 Windows 操作系统的用户,Windows Defender 已具备了相对强大的病毒防护功能,能够有效识别和清除常见病毒。

Javachichi的博客 2083

QT实现HTTP文件(夹)下载的完整流程与实战技巧

本文详细介绍了使用QT框架实现HTTP文件和文件夹下载的完整流程与实战技巧。通过QNetworkAccessManager等核心类,讲解了从单文件下载、大文件处理、进度显示、暂停/取消功能,到复杂的文件夹下载策略。文章重点剖析了断点续传、错误处理与网络健壮性等关键问题,为C++桌面应用集成稳定高效的下载功能提供了专业指导。

weixin_29239279的博客 277

IPS入侵防御系统

入侵防御系统(IPS: Intrusion Prevention System)是电脑网络安全设施,是对防病毒软件(Antivirus Programs)和防火墙(Packet Filter, Application Gateway)的补充。 入侵防御系统(Intrusion-prevention system)是一部能够监视网络或网络设备的网络资料传输行为的计算机网络安全设备,能够即时的中断、调...

hqmln的博客 509

RS-485调试踩坑实录:MAX13487数据回环问题排查与修复(附电路图)

本文深入解析了RS-485通信中MAX13487芯片的数据回环问题,提供了详细的排查过程和解决方案。通过分析芯片特性和自动换向机制,揭示了RO引脚配置不当是导致问题的关键原因,并给出硬件(添加上拉电阻)和软件(调整MCU配置)两种修复方案,附有优化设计建议和实际调试技巧。

play7的博客 1297

GD32F303实战:用定时器4触发ADC2+DMA,实现10ms精准采样1024点的完整流程

本文详细介绍了在GD32F303微控制器上使用Timer4触发ADC2配合DMA传输,实现10ms精准采样1024点的完整方案。从硬件架构设计、时钟树配置到定时器参数计算,提供了完整的工程实现流程和常见问题排查方法,适用于工业传感器监测等高实时性场景。

weixin_29194693的博客 433

信息与网络安全期末复习(完整版)

信息与网络安全 第一章 概述 1.1 基本概念 信息安全是指信息网络中的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露、否认等,系统连续可靠正常的运行,信息服务不中断。 信息安全威胁是指某些因素(人、物、事件、方法等)对信息系统的安全使用可能构成的危害。 1.2 攻击 概念 攻击:仅仅发生在入侵行为完全完成,且入侵者已进入目标网络内的行为称为攻击。但更为积极的观点是:所有可能使一个网络受到破坏的行为都称为攻击。即从一个入侵者开始在目标机上工作的那个时刻起,攻击就开始了。

bestkasscn的博客 5824

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

四.信息系统安全管理

@(项目经理考试学习笔记) 四.信息系统安全管理 主要考系统安全和网络安全 1. 数据加密与认证 1.1 加密机制 1.1.1 对称加密 加密和解密 用同一秘钥 1.1.2 非对称加密 加密和解密 用不同秘钥 1.2 数字签名 1.用发送者的私钥来加密 2.数字签名不算是加密过程,是叫签名过程,是确认发送者的手段 3.能够保证数据的完整性(信...

m0_37370820的博客 1624

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机与安全技术:保护数据与系统的关键策略

5.5 使用安全的设备和应用程序使用安全的设备和应用程序可以帮助保护您的数据和系统免受未经授权的访问和攻击。总之,计算机与安全技术对于保护企业和个人的数据和系统免受未经授权的访问、篡改或破坏至关重要。通过采取这些措施,您可以大大提高计算机系统的安全性,从而确保您的数据和系统的完整性和机密性。在备份重要数据时应该考虑到数据的完整性、可用性和安全性等方面的问题,以确保备份数据的可靠性。常用的加密技术包括对称加密和公钥加密。定期更新软件和操作系统可以修复潜在的安全漏洞,并确保您的系统受到最新的安全补丁的保护。

aguyuc1的博客 294

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

高校网络安全管理工作之安全检查

一、引言 高校服务器、网站及信息系统数量众多,且质量普遍不高,安全风险高。又,高校从事网络安全管理的人员较少,且杂事繁多,如果无清晰且可操作的安全检查步骤,势必产生疏漏,造成含有漏洞的系统暴露在互联网。因此,本文总结安全检查的常规环节以及手段,分为主机层面和应用层面,可以在日常工作中参照执行。 总的说来,安全检查至少要完成以下步骤:1、检查主机的防火墙或杀毒软件有没有开启、操作系统密码是否安全。2、通过漏洞扫描设备检查是否存在高危漏洞。3、检查是否有验证码等防密码爆破手段。4、检查系统用户密码是否有强度要求

随心涂鸦的白板 733

怎么提高网络安全性

在本文中,我们将探讨如何提高网络安全性,以便用户可以保护其计算机和网络免受安全威胁。因此,用户应该定期检查操作系统和软件的更新,保持其安全性。提高网络安全性需要用户采取多种措施,包括更新操作系统和软件、安装防病毒软件、加强密码设置、开启防火墙、避免使用公共网络、限制访问权限、备份数据和教育员工网络安全知识等。根据员工的职责和需求限制他们访问不同的系统和文件,以保护敏感信息不被未授权的人员访问。避免在公共网络上访问敏感信息和进行重要的业务操作,因为公共网络存在安全隐患,攻击者可能会窃取用户的个人信息和密码。

weixin_40191861的博客 595
上一篇: 取得Windows版本(比价全,到Vista)
下一篇: error LNK2005:XXXX already defined in XXX.lib
ShenRui
博客等级 码龄20年 63粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值