/
githubmirror
/
PowerToys
Обзор
Документация
Войти
/
githubmirror
/
PowerToys
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/common/Telemetry/TraceBase.h
63 строки
2 KB
Stefan Markovic
[General]Add an option for telemetry opt-in and visualization(#34078)
24 окт 2024, 23:04
Не верифицирован
24 окт 2024, 23:04
133aa85
Код
Авторство
О чём код?
#pragma once #include "ProjectTelemetry.h" #define TraceLoggingWriteWrapper(provider, eventName, ...) \ if (IsDataDiagnosticsEnabled()) \ { \ TraceLoggingWrite(provider, eventName, __VA_ARGS__); \ } namespace telemetry { constexpr inline const wchar_t* DataDiagnosticsRegKey = L"Software\\Classes\\PowerToys"; constexpr inline const wchar_t* DataDiagnosticsRegValueName = L"AllowDataDiagnostics"; class TraceBase { public: static void RegisterProvider() { TraceLoggingRegister(g_hProvider); } static void UnregisterProvider() { TraceLoggingUnregister(g_hProvider); } static bool IsDataDiagnosticsEnabled() { HKEY key{}; if (RegOpenKeyExW(HKEY_CURRENT_USER, DataDiagnosticsRegKey, 0, KEY_READ, &key) != ERROR_SUCCESS) { return false; } DWORD isDataDiagnosticsEnabled = 0; DWORD size = sizeof(isDataDiagnosticsEnabled); if (RegGetValueW( HKEY_CURRENT_USER, DataDiagnosticsRegKey, DataDiagnosticsRegValueName, RRF_RT_REG_DWORD, nullptr, &isDataDiagnosticsEnabled, &size) != ERROR_SUCCESS) { RegCloseKey(key); return false; } RegCloseKey(key); return isDataDiagnosticsEnabled; } }; } // namespace telemetry