Как получить всех пользователей Windows / Linux, а не только текущего пользователя с Python - PullRequest
0 голосов
/ 25 мая 2019

Я знаю, как получить текущего пользователя с помощью os или getpass.getuser (), но есть ли способ получить список всех пользователей, а не только текущего? Прочитайте документацию os и getpass, но я ничего не делал.

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Это зависит от ОС.

В Linux см. Python-скрипт для получения списка пользователей и групп .

В Windows:

  • через WMI

  • через NetUserEnum API

    • парсит вывод net user или
    • сделать тот же вызов с pywin32:

      import win32net, win32netcon
      names=[]; resumeHandle=0
      while True:
          data,_,resumeHandle=win32net.NetUserEnum(None,0,
                  win32netcon.FILTER_NORMAL_ACCOUNT,resumeHandle)
          names.extend(e["name"] for e in data)
          if not resumeHandle: break
      del data,resumeHandle
      print names
      
0 голосов
/ 25 мая 2019

Две идеи для методов, специфичных для Windows:

from pathlib import Path
users = [x.name for x in Path(r'C:\Users').glob('*') if x.name not in ['Default', 'Default User', 'Public', 'All Users'] and x.is_dir()]
print(users)

Пути в C: \ Users

import os
os.system('net user > users.txt')
users = Path('./users.txt').read_text()
print(users)

Вывод net user

...