我想访问Windows安全中心来检查几个安全特性的状态。
示例:
我怎么能这么做?
2003,XP,vista,7
发布于 2011-10-11 11:50:38
在Vista+上,您可以通过WscGetSecurityProviderHealth
获得它的状态摘要。
发布于 2022-04-28 10:26:58
#include <Windows.h>
#include <string>
#include <iostream>
#include <Wscapi.h>
#pragma comment(lib, "Wscapi.lib")
using namespace std;
string printStatus(WSC_SECURITY_PROVIDER_HEALTH status)
{
switch (status)
{
case WSC_SECURITY_PROVIDER_HEALTH_GOOD: return "GOOD";
case WSC_SECURITY_PROVIDER_HEALTH_NOTMONITORED: return "NOTMONITORED";
case WSC_SECURITY_PROVIDER_HEALTH_POOR: return "POOR";
case WSC_SECURITY_PROVIDER_HEALTH_SNOOZE: return "SNOOZE";
default: return "Status Error";
}
}
void getHealth()
{
WSC_SECURITY_PROVIDER_HEALTH health;
if (S_OK == WscGetSecurityProviderHealth(WSC_SECURITY_PROVIDER_FIREWALL, &health))
cout << "FIREWALL: " << printStatus(health) << endl;
if (S_OK == WscGetSecurityProviderHealth(WSC_SECURITY_PROVIDER_AUTOUPDATE_SETTINGS, &health))
cout << "AUTOUPDATE: " << printStatus(health) << endl;
if (S_OK == WscGetSecurityProviderHealth(WSC_SECURITY_PROVIDER_ANTIVIRUS, &health))
cout << "ANTIVIRUS: " << printStatus(health) << endl;
if (S_OK == WscGetSecurityProviderHealth(WSC_SECURITY_PROVIDER_ANTISPYWARE, &health))
cout << "ANTISPYWARE: " << printStatus(health) << endl;
if (S_OK == WscGetSecurityProviderHealth(WSC_SECURITY_PROVIDER_INTERNET_SETTINGS, &health))
cout << "INTERNET SETTINGS: " << printStatus(health) << endl;
if (S_OK == WscGetSecurityProviderHealth(WSC_SECURITY_PROVIDER_USER_ACCOUNT_CONTROL, &health))
cout << "UAC: " << printStatus(health) << endl;
if (S_OK == WscGetSecurityProviderHealth(WSC_SECURITY_PROVIDER_SERVICE, &health))
cout << "SERVICE: " << printStatus(health) << endl;
if (S_OK == WscGetSecurityProviderHealth(WSC_SECURITY_PROVIDER_ALL, &health))
cout << "ALL: " << printStatus(health) << endl;
}
void main()
{
getHealth();
}
https://stackoverflow.com/questions/7725464
复制相似问题