Получить имя и фамилию в Windows с помощью Electron

#javascript #node.js #electron

#javascript #node.js #electron

Вопрос:

У меня проблемы с получением имени и фамилии с помощью electron и node js, у меня есть имя пользователя, но мне нужны имя и фамилия.

Пример изображения

Я пытался:

 
   const username = require('username');
   const os = require ('os');
   const computerName = os.hostname();
   const fullname = require('fullname');

   console.log(os.userInfo());


   // Console:
   //{ uid: -1,
   //  gid: -1,
   //  username: 'mauroh',
   //  homedir: 'C:\Users\mauroh',
   //  shell: null 
   //}

   console.log("computerName: ", computerName);
   console.log("username: " , username());

   // Console:
   // computerName: DEV
   // username: mauroh

   fullname().then(name => {
    console.log(name);
   });

   // Console:
   // mauroh
  

Есть ли какой-либо способ получить имя и фамилию? или имя профиля с помощью electron или node js?

Пример: Mauro HUC

Примечание: Это приложение предназначено только для Windows.

Спасибо!

Ответ №1:

Модуль «полное имя» в некоторых случаях не возвращает имя, поскольку его невозможно найти. Это четко указано в репозитории GitHub для модуля.

Ответ №2:

Я нашел способ сделать это,

  1. Я использую пакет username для получения зарегистрированного пользователя.
 async getUsername() {
  return await username();
}
  
  1. Затем в node js и electron вы можете использовать дочерние процессы, документы child_process.

  2. Когда вы выполняете команду net user <username> или net user <username> / domain получаете всю информацию о пользователе, среди всей информации есть полное имя, также имя может быть пустым.

 const child = require('child_process');
let exec = child.exec;

// And make a function for do command

function execute(command, callback){
    exec(command, function(error, stdout, stderr){ 
      let result = null;

      if(!error){

        var splitted = stdout.split("n");    
        var username = '';
        var fullname = '';

        for(var i=0; i < splitted.length; i  ){
          if(splitted[i].search("User name") != -1){
            splitted[i] = splitted[i].replace('User name',' ');
            splitted[i] = splitted[i].trim();
            username = splitted[i];
          }else if(splitted[i].search("Full Name") != -1){
            splitted[i] = splitted[i].replace('Full Name',' ');
            splitted[i] = splitted[i].trim();
            fullname = splitted[i];
          }
        }

        let data = {
          username: (username) ? username.toLowerCase() : null,
          fullname: (fullname) ? fullname: null
        }

        result = data;
      } else{
        result = null;
      }
      callback(result); 
    });
  };

  

Таким образом, вы можете получить полное имя пользователя.