From 72d0f76acc2d2ffc5880a0a258972621dfbf18be Mon Sep 17 00:00:00 2001 From: antelle Date: Sat, 24 Apr 2021 10:48:28 +0200 Subject: [PATCH] getting parent info for cmd --- .../ipc-handlers/browser-extension-connector.js | 17 ++++++++++++++++- desktop/scripts/util/process-utils.js | 4 ++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/desktop/scripts/ipc-handlers/browser-extension-connector.js b/desktop/scripts/ipc-handlers/browser-extension-connector.js index f63c6d9f..dfe0a47b 100644 --- a/desktop/scripts/ipc-handlers/browser-extension-connector.js +++ b/desktop/scripts/ipc-handlers/browser-extension-connector.js @@ -25,6 +25,11 @@ const ExtensionOrigins = { 'chrome-extension://pdffhmdngciaglkoonimfcmckehcpafo/': 'keepassxc-browser' }; +const AppNames = { + 'msedge': 'Microsoft Edge', + 'chrome': 'Google Chrome' +}; + let connectedSockets = new Map(); let connectedSocketState = new WeakMap(); let server; @@ -289,7 +294,17 @@ async function processFirstMessageFromSocket(socket, message) { return; } - appName = parentProcessInfo.appName; + if (process.platform === 'win32' && parentProcessInfo.appName === 'cmd') { + try { + parentProcessInfo = await getProcessInfo(parentProcessInfo.ppid); + } catch (e) { + logger.error( + `Cannot get info for PID ${parentProcessInfo.ppid}: ${e}, assuming cmd is the launcher` + ); + } + } + + appName = AppNames[parentProcessInfo.appName] ?? parentProcessInfo.appName; appName = appName[0].toUpperCase() + appName.substr(1); } diff --git a/desktop/scripts/util/process-utils.js b/desktop/scripts/util/process-utils.js index b259ed17..5eccee62 100644 --- a/desktop/scripts/util/process-utils.js +++ b/desktop/scripts/util/process-utils.js @@ -52,7 +52,7 @@ function parsePsOutput(output) { } return { pid: match[1] | 0, - parentPid: match[2] | 0, + ppid: match[2] | 0, execPath: match[3], appName: match[3].split('/').pop() }; @@ -62,7 +62,7 @@ function parseWmicOutput(output) { const result = {}; const keyMap = { ProcessId: 'pid', - ParentProcessId: 'parentPid', + ParentProcessId: 'ppid', ExecutablePath: 'execPath' }; for (const line of output.split(/\n/)) {