diff --git a/src/vs/workbench/contrib/stats/electron-browser/workspaceStats.ts b/src/vs/workbench/contrib/stats/electron-browser/workspaceStats.ts index 1760ed459e909..c72c8fb8b5f44 100644 --- a/src/vs/workbench/contrib/stats/electron-browser/workspaceStats.ts +++ b/src/vs/workbench/contrib/stats/electron-browser/workspaceStats.ts @@ -16,6 +16,7 @@ import { ISharedProcessService } from 'vs/platform/ipc/electron-browser/sharedPr import { IWorkspaceStatsService, Tags } from 'vs/workbench/contrib/stats/common/workspaceStats'; import { IWorkspaceInformation } from 'vs/platform/diagnostics/common/diagnostics'; import { IRequestService } from 'vs/platform/request/common/request'; +import { isWindows } from 'vs/base/common/platform'; const SshProtocolMatcher = /^([^@:]+@)?([^:]+):/; const SshUrlMatcher = /^([^@:]+@)?([^:]+):(.+)$/; @@ -153,6 +154,8 @@ export class WorkspaceStats implements IWorkbenchContribution { } private async report(): Promise { + // Windows-only Edition Event + this.reportWindowsEdition(); // Workspace Stats this.workspaceStatsService.getTags() @@ -167,6 +170,25 @@ export class WorkspaceStats implements IWorkbenchContribution { this.getWorkspaceInformation().then(stats => diagnosticsChannel.call('reportWorkspaceStats', stats)); } + async reportWindowsEdition(): Promise { + if (!isWindows) { + return; + } + + const Registry = await import('vscode-windows-registry'); + + let value; + try { + value = Registry.GetStringRegKey('HKEY_LOCAL_MACHINE', 'SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion', 'EditionID'); + } catch { } + + if (value === undefined) { + value = 'Unknown'; + } + + this.telemetryService.publicLog2<{ edition: string }, { edition: { classification: 'SystemMetaData', purpose: 'BusinessInsight' } }>('windowsEdition', { edition: value }); + } + private async getWorkspaceInformation(): Promise { const workspace = this.contextService.getWorkspace(); const state = this.contextService.getWorkbenchState();