Node.js / electron:如何识别进程是windows进程或其他应用程序进程

时间:2018-05-28 10:55:06

标签: node.js electron child-process

我正在开发一个提供前5个CPU使用率应用程序名称的应用程序。目前,我已经从以下代码中获得了前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 :(得分:1)

tasklist是可以接受的方式。

系统应用和服务可以通过Session NameUsername列过滤掉。

可以使用

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);