在windows2003下怎样获取杀毒软件病毒库的日期?VC编程 急急急死我了 :( 本帖最后由 tp1623 于 2011-08-24 10:57:19 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BOOL CAntivirusDetection::__AskSecurityCenter(){ // Step 0: -------------------------------------------------- // 查看SecurityCenter服务是否存在 --------------------------- if (!__IsExistService(_T("wscsvc"))) { return FALSE; } HRESULT hres; // Step 1: -------------------------------------------------- // Initialize COM. ------------------------------------------ hres = CoInitializeEx(0, COINIT_MULTITHREADED); if (FAILED(hres)) { return FALSE; // Program has failed. } // Step 2: -------------------------------------------------- // Set general COM security levels -------------------------- hres = CoInitializeSecurity( NULL, -1, // COM authentication NULL, // Authentication services NULL, // Reserved RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation NULL, // Authentication info EOAC_NONE, // Additional capabilities NULL // Reserved ); if (FAILED(hres)) { return FALSE; // Program has failed. } // Step 3: --------------------------------------------------- // Obtain the initial locator to WMI ------------------------- IWbemLocator *pLoc = NULL; hres = CoCreateInstance( CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLoc); if (FAILED(hres)) { return FALSE; // Program has failed. } // Step 4: ----------------------------------------------------- // Connect to WMI through the IWbemLocator::ConnectServer method IWbemServices *pSvc = NULL; // Connect to the root\SecurityCenter namespace with // the current user and obtain pointer pSvc // to make IWbemServices calls. hres = pLoc->ConnectServer( _bstr_t(L"ROOT\\SecurityCenter"), // Object path of WMI namespace NULL, // User name. NULL = current user NULL, // User password. NULL = current 0, // Locale. NULL indicates current NULL, // Security flags. 0, // Authority (e.g. Kerberos) 0, // Context object &pSvc // pointer to IWbemServices proxy ); if (FAILED(hres)) { CoUninitialize(); return FALSE; // Program has failed. } // Step 5: -------------------------------------------------- // Set security levels on the proxy ------------------------- hres = CoSetProxyBlanket( pSvc, // Indicates the proxy to set RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx NULL, // Server principal name RPC_C_AUTHN_LEVEL_CALL, // RPC_C_AUTHN_LEVEL_xxx RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx NULL, // client identity EOAC_NONE // proxy capabilities ); if (FAILED(hres)) { pSvc->Release(); pLoc->Release(); CoUninitialize(); return FALSE; // Program has failed. } // Step 6: -------------------------------------------------- // Use the IWbemServices pointer to make requests of WMI ---- // For example, get the name of the operating system IEnumWbemClassObject* pEnumerator = NULL; hres = pSvc->ExecQuery( bstr_t("WQL"), bstr_t("SELECT * FROM AntiVirusProduct"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator); if (FAILED(hres)) { pSvc->Release(); pLoc->Release(); CoUninitialize(); return FALSE; // Program has failed. } // Step 7: ------------------------------------------------- // Get the data from the query in step 6 ------------------- IWbemClassObject *pclsObj; ULONG uReturn = 0; while (pEnumerator) { HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn); if(0 == uReturn) { // Cleanup // ======== pclsObj->Release(); pSvc->Release(); pLoc->Release(); pEnumerator->Release(); CoUninitialize(); return FALSE; } VARIANT vtProp; // Get the value of the Name property hr = pclsObj->Get(L"displayName", 0, &vtProp, 0, 0); hr = pclsObj->Get(L"companyName", 0, &vtProp, 0, 0); hr = pclsObj->Get(L"pathToSignedProductExe", 0, &vtProp, 0, 0); hr = pclsObj->Get(L"versionNumber", 0, &vtProp, 0, 0); VariantClear(&vtProp); pclsObj->Release(); } // Cleanup // ======== pSvc->Release(); pLoc->Release(); pEnumerator->Release(); //pclsObj->Release(); CoUninitialize(); return TRUE;} windows 2003下没有ROOT\\SecurityCenter命名空间,走WMI走不通。 求数据采集高手帮助 如何将属性表单放置在对话框上? 对话框控件显示图片的问题 请求帮助,求Visual C++数字图像处理(第二版) 人民邮电出版社 附带光盘源代码.谢谢 怎样用相对路径建立一个文件? 怎么得到一片文章里面的单词并且统计出它的次数??急!! 有做过在对话框中打印的吗?请帮个忙吧看看这一问题!谢谢 哪位能告诉我是么是代码页? 如何快速的读懂一个陌生的project? 怎样每次显示图片时都是在新的视图i类显示 将数据库的内容读取到编辑框中?? 本机没有串口,怎么能测试对串口操作?
{
// Step 0: --------------------------------------------------
// 查看SecurityCenter服务是否存在 ---------------------------
if (!__IsExistService(_T("wscsvc")))
{
return FALSE;
} HRESULT hres; // Step 1: --------------------------------------------------
// Initialize COM. ------------------------------------------
hres = CoInitializeEx(0, COINIT_MULTITHREADED);
if (FAILED(hres))
{
return FALSE; // Program has failed.
} // Step 2: --------------------------------------------------
// Set general COM security levels --------------------------
hres = CoInitializeSecurity(
NULL,
-1, // COM authentication
NULL, // Authentication services
NULL, // Reserved
RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication
RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation
NULL, // Authentication info
EOAC_NONE, // Additional capabilities
NULL // Reserved
); if (FAILED(hres))
{
return FALSE; // Program has failed.
}
// Step 3: ---------------------------------------------------
// Obtain the initial locator to WMI -------------------------
IWbemLocator *pLoc = NULL;
hres = CoCreateInstance(
CLSID_WbemLocator,
0,
CLSCTX_INPROC_SERVER,
IID_IWbemLocator, (LPVOID *) &pLoc); if (FAILED(hres))
{
return FALSE; // Program has failed.
} // Step 4: -----------------------------------------------------
// Connect to WMI through the IWbemLocator::ConnectServer method
IWbemServices *pSvc = NULL; // Connect to the root\SecurityCenter namespace with
// the current user and obtain pointer pSvc
// to make IWbemServices calls.
hres = pLoc->ConnectServer(
_bstr_t(L"ROOT\\SecurityCenter"), // Object path of WMI namespace
NULL, // User name. NULL = current user
NULL, // User password. NULL = current
0, // Locale. NULL indicates current
NULL, // Security flags.
0, // Authority (e.g. Kerberos)
0, // Context object
&pSvc // pointer to IWbemServices proxy
); if (FAILED(hres))
{
CoUninitialize();
return FALSE; // Program has failed.
} // Step 5: --------------------------------------------------
// Set security levels on the proxy -------------------------
hres = CoSetProxyBlanket(
pSvc, // Indicates the proxy to set
RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx
RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx
NULL, // Server principal name
RPC_C_AUTHN_LEVEL_CALL, // RPC_C_AUTHN_LEVEL_xxx
RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
NULL, // client identity
EOAC_NONE // proxy capabilities
); if (FAILED(hres))
{
pSvc->Release();
pLoc->Release();
CoUninitialize();
return FALSE; // Program has failed.
} // Step 6: --------------------------------------------------
// Use the IWbemServices pointer to make requests of WMI ----
// For example, get the name of the operating system
IEnumWbemClassObject* pEnumerator = NULL;
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT * FROM AntiVirusProduct"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator); if (FAILED(hres))
{
pSvc->Release();
pLoc->Release();
CoUninitialize();
return FALSE; // Program has failed.
} // Step 7: -------------------------------------------------
// Get the data from the query in step 6 -------------------
IWbemClassObject *pclsObj;
ULONG uReturn = 0;
while (pEnumerator)
{
HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
&pclsObj, &uReturn); if(0 == uReturn)
{
// Cleanup
// ========
pclsObj->Release();
pSvc->Release();
pLoc->Release();
pEnumerator->Release();
CoUninitialize();
return FALSE;
} VARIANT vtProp;
// Get the value of the Name property
hr = pclsObj->Get(L"displayName", 0, &vtProp, 0, 0);
hr = pclsObj->Get(L"companyName", 0, &vtProp, 0, 0);
hr = pclsObj->Get(L"pathToSignedProductExe", 0, &vtProp, 0, 0);
hr = pclsObj->Get(L"versionNumber", 0, &vtProp, 0, 0);
VariantClear(&vtProp);
pclsObj->Release();
} // Cleanup
// ========
pSvc->Release();
pLoc->Release();
pEnumerator->Release(); //pclsObj->Release();
CoUninitialize(); return TRUE;
}