Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1541)

Unified Diff: chrome/browser/metrics/antivirus_metrics_provider_win.cc

Issue 2578453002: Add support to detect unregistered AV products in system profile. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/metrics/antivirus_metrics_provider_win.cc
diff --git a/chrome/browser/metrics/antivirus_metrics_provider_win.cc b/chrome/browser/metrics/antivirus_metrics_provider_win.cc
index 44772e5fe767c333845053ba99188421546359ad..ada7c8a7cb55c818c32112f70b28ed83d687dc03 100644
--- a/chrome/browser/metrics/antivirus_metrics_provider_win.cc
+++ b/chrome/browser/metrics/antivirus_metrics_provider_win.cc
@@ -176,6 +176,8 @@ AntiVirusMetricsProvider::GetAntiVirusProductsOnFileThread() {
result = FillAntiVirusProductsFromWMI(&av_products);
}
+ MaybeAddUnregisteredAntiVirusProducts(&av_products);
+
UMA_HISTOGRAM_ENUMERATION("UMA.AntiVirusMetricsProvider.Result",
result,
RESULT_COUNT);
@@ -426,3 +428,48 @@ AntiVirusMetricsProvider::FillAntiVirusProductsFromWMI(
return RESULT_SUCCESS;
}
+
+void AntiVirusMetricsProvider::MaybeAddUnregisteredAntiVirusProducts(
+ std::vector<AvProduct>* products) {
+ base::ThreadRestrictions::AssertIOAllowed();
+
+ // Trusteer Rapport does not register with WMI or Security Center so do some
+ // "best efforts" detection here.
+
+ // Rapport always installs into 32-bit Program Files in directory
+ // %DIR_PROGRAM_FILESX86%\Trusteer\Rapport
+ base::FilePath binary_path;
+ if (!PathService::Get(base::DIR_PROGRAM_FILESX86, &binary_path))
+ return;
+
+ binary_path = binary_path.AppendASCII("Trusteer")
+ .AppendASCII("Rapport")
+ .AppendASCII("bin")
+ .AppendASCII("RapportService.exe");
+
+ if (!base::PathExists(binary_path))
+ return;
+
+ std::wstring mutable_path_str(binary_path.value());
+ std::string product_version;
+
+ if (!GetProductVersion(&mutable_path_str, &product_version))
+ return;
+
+ AvProduct av_product;
+
+ // Assume enabled, no easy way of knowing for sure.
+ av_product.set_product_state(metrics::SystemProfileProto::AntiVirusState::
+ SystemProfileProto_AntiVirusState_STATE_ON);
+
+ // Taken from Add/Remove programs as the product name.
+ std::string product_name("Trusteer Endpoint Protection");
+ if (ShouldReportFullNames()) {
+ av_product.set_product_name(product_name);
+ av_product.set_product_version(product_version);
+ }
+ av_product.set_product_name_hash(metrics::HashName(product_name));
+ av_product.set_product_version_hash(metrics::HashName(product_version));
+
+ products->push_back(av_product);
+}

Powered by Google App Engine
This is Rietveld 408576698