Node.js / Electron: Как определить процесс Windows процесс или другой процесс приложения - PullRequest
0 голосов
/ 28 мая 2018

Я работаю над приложением, которое дает топ-5 имен приложений, использующих процессор.В настоящее время у меня есть 5 лучших приложений из следующего кода:

    var _ = require('lodash');
    var ps = require('current-processes');

     ps.get(function(err, processes) {

        var sorted = _.sortBy(processes, 'cpu');
        var top5  = sorted.reverse().splice(0, 5); // Top 5 results

        console.log(top5);

    });

Вывод: добавление o / p в изображение: enter image description here

, над которым я работала также другой метод:

var exec = require('child_process').exec;
  exec('tasklist', function(err, stdout, stderr) {
    var lines = stdout.toString().split('\n');
    console.log(lines);
  });

Выходное изображение

enter image description here

Но я не могу определить, является ли процесс (pid)служб windows или другого приложения.Короче говоря, я не хочу показывать какой-либо системный сервис.Есть ли другой способ определить это?

1 Ответ

0 голосов
/ 28 мая 2018

tasklist является приемлемым способом сделать это.

Системные приложения и службы могут быть отфильтрованы по столбцам Session Name и Username.

tasklist вспомогательный пакет может использоваться вместо синтаксического анализа вывода команды вручную.

В основном N/A (может быть локализован) и NT AUTHORITY\* (могут иметь локальные имена, поэтому NT AUTHORITY\SYSTEM не надежен) пользователей иуслуги (вероятно, подпадают под предыдущую категорию) должны быть отфильтрованы:

tasklist({ verbose: true })
.then(apps => {
  apps = apps
  .filter(app => app.sessionName !== 'Services')
  .filter(app => /^(?!NT AUTHORITY).+\\/.test(app.username));

  console.log(apps)
})
.catch(console.error);
...