Python получить имя пользователя windows

How to get Users of Windows/Linux Systems using Python?

Hello Geek! In this article, we will use Python to get the current users on the Windows and Linux Systems.

The method that we are going to use to get the current users is users(). It is defined in the psutil Library. Therefore syntax of the function will be

syntax: psutil.users()

The function psutil.users() returns all the users that are connected to the System. It returns the users as a list of named tuples.

Each tuple has the name, terminal, host, started and pid as its attributes. The attribute name gives us the username.

PROGRAM

First, import the psutil Python Library to access the users() method.

Now, use the method psutil.users() method to get the list of users as a named tuple and assign to the variable user_list.

Implement a print statement to display that we are going to print the usernames of the users associated with the System.

Iterate over the list of users using a for a statement as the variable user.

Now, under the for loop, we can get the username from the named tuple as user.name and assign it to the variable username.

Now, print the variable username using a print statement.

user_list = psutil.users() print("Users associated with this System are :") for user in user_list: username = user.name print(username)

Output

Users associated with this System are : Guthas

Hurrah! We have successfully obtained the username of all the users associated with the System using simple lines of code in Python.

Thank you for reading this article. I hope this article helped you in some way. Also do check out our other related articles below:

Источник

Full name of Windows user name (in Domain) using Python

I want to retrieve the full name of a Windows computer user in Python. I have found the equivalent batch command:

net user "%USERNAME%" /domain | FIND /I "Full Name" 

that returns the full name (e.g. Full Name John Doe ). I have done the following way by using subprocess but I am wondering if there is a more native way to do it with some Python modules.

import getpass import subprocess import re username = getpass.getuser() p = subprocess.Popen( 'net user %s /domain' % username, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) info, err = p.stdout.read(), p.stderr.read() full_name = re.findall(r'Full Name\s+(.*\S)', info) print(full_name) 

2 Answers 2

The more direct way to do this is to query Active Directory. You’d perform a lookup on the user, followed by getting the displayName attribute. (This maps to the Full Name displayed in Windows.)

Читайте также:  Название Вашей первой странички

You have two options here:

Using a Python AD library, e.g. pyad

This is very Windows-specific, and requires the pywin32 library. It relies on ADSI APIs, so it will only works on Windows.

from pyad import aduser user = aduser.ADUser.from_cn(username) print(user.get_attribute("displayName")) 

How you get the username is up to you. You can use getpass.getuser() , os.environ[«USERNAME»] (Windows-only), etc.

Using a Python LDAP library, e.g. ldap3

This follows the standard LDAP protocol, with a pure Python implementation, so should work from any client OS.

Using raw LDAP queries is rather more involved than the ADSI abstractions. I suggest you read the documentation (which has decent tutorials) and search for more tutorials on interacting with Microsoft AD via ldap3 .

Note that one possible issue is that searching by username (CN) alone might get you the wrong object. It’s possible to have multiple objects with the same CN across multiple OUs. If you want to be more precise, you might want to use a unique identifier like the SID.

Источник

Есть ли переносимый способ получить текущее имя пользователя в Python?

Есть ли переносимый способ получить текущее имя пользователя пользователя в Python (то есть тот, который работает как под Linux, так и Windows, по крайней мере). Он будет работать как os.getuid :

>>> os.getuid() 42 >>> os.getusername() 'slartibartfast' 

Я googled вокруг и был удивлен, чтобы не найти окончательного ответа (хотя, возможно, я плохо искал Google). Модуль pwd обеспечивает относительно простой способ достижения этого, скажем, Linux, но его нет в Windows. Некоторые из результатов поиска предполагали, что получение имени пользователя под Windows может быть затруднено в определенных обстоятельствах (например, выполняется как служба Windows), хотя я еще не подтвердил это.

ОТВЕТЫ

Ответ 1

import getpass getpass.getuser() 'kostya' 

p.s. В комментарии ниже «эта функция просматривает значения переменных среды для определения имени пользователя. Поэтому эту функцию нельзя использовать для целей контроля доступа (или, возможно, для любой другой цели, поскольку она позволяет любому пользователю выдавать себя за другое).»

Ответ 2

Лучше всего было бы объединить os.getuid() с pwd.getpwuid() :

import os import pwd def get_username(): return pwd.getpwuid( os.getuid() )[ 0 ] 

Для получения дополнительной информации обратитесь к документам pwd:

Ответ 3

Вы также можете использовать:

Ответ 4

Вы, вероятно, можете использовать:

Но это не будет безопасным, потому что переменные среды могут быть изменены.

Ответ 5

Это может сработать. Я не знаю, как они ведут себя при работе в качестве службы. Они не переносимы, но для этого предназначены операторы os.name и if .

win32api.GetUserName() win32api.GetUserNameEx(. ) 

Ответ 6

Если вам нужно это, чтобы получить домашний каталог пользователя, ниже можно считать переносимым (win32 и linux как минимум), частью стандартной библиотеки.

>>> os.path.expanduser('~') 'C:\\Documents and Settings\\johnsmith' 

Также вы можете проанализировать такую ​​строку, чтобы получить только последний компонент пути (то есть имя пользователя).

Читайте также:  Copy link url html

Ответ 7

Мне, используя модуль os , лучше всего подходит для переносимости: лучше всего работает как на Linux, так и на Windows.

import os # Gives user home directory userhome = os.path.expanduser('~') print "User home Dir: " + userhome # Gives username by splitting path based on OS print "username: " + os.path.split(userhome)[-1] 

Пользовательский дом Dir: C:\Users\myuser

имя пользователя: myuser

Пользовательский дом Dir:/root

имя пользователя: root

Не нужно устанавливать какие-либо модули или расширения.

Ответ 8

Комбинированный подход pwd и getpass , основанный на других ответах:

try: import pwd except ImportError: import getpass pwd = None def current_user(): if pwd: return pwd.getpwuid(os.geteuid()).pw_name else: return getpass.getuser() 

Ответ 9

Для UNIX, по крайней мере, это работает.

import commands username = commands.getoutput("echo $(whoami)") print username 

изменить Я просто просмотрел его, и это работает в Windows и UNIX:

import commands username = commands.getoutput("whoami") 

В UNIX он возвращает ваше имя пользователя, но в Windows он возвращает вашу группу пользователей, косую черту, ваше имя пользователя.

UNIX возвращает: «имя пользователя»

Windows возвращает: «domain/username»

Это интересно, но, вероятно, не идеально, если вы ничего не делаете в терминале. в этом случае вы, вероятно, используете os.system для начала. Например, некоторое время назад мне нужно было добавить моего пользователя в группу, поэтому я сделал (это в Linux, заметьте)

import os os.system("sudo usermod -aG \"group_name\" $(whoami)") print "You have been added to \"group_name\"! Please log out for this to take effect" 

Мне кажется, что читать легче и, вам не нужно импортировать pwd или getpass.

Мне также кажется, что «домен/пользователь» может быть полезен в некоторых приложениях в Windows.

Ответ 10

Я написал модуль plx некоторое время назад, чтобы получить имя пользователя переносимым способом в Unix и Windows (среди прочего): http://www.decalage.info/en/python/plx

import plx username = plx.get_username() 

(для Windows требуется расширение win32)

Ответ 11

Вы можете получить текущее имя пользователя в Windows, пройдя через API Windows, хотя это немного громоздко для вызова через ctypes FFI (GetCurrentProcess → OpenProcessToken → GetTokenInformation → LookupAccountSid).

Я написал небольшой модуль, который может сделать это прямо из Python, getuser.py. Использование:

import getuser print(getuser.lookup_username()) 

Он работает как с Windows, так и с * nix (последний использует модуль pwd , как описано в других ответах).

Ответ 12

Использование только стандартных библиотек Python:

from os import environ,getcwd getUser = lambda: environ["USERNAME"] if "C:" in getcwd() else environ["USER"] user = getUser() 

Работает в Windows, Mac или Linux

Кроме того, вы можете удалить одну строку с помощью немедленного вызова:

from os import environ,getcwd user = (lambda: environ["USERNAME"] if "C:" in getcwd() else environ["USER"])() 

Ответ 13

Самый простой способ получить текущее имя пользователя — это определенно username .

import username print(username()) # your_username 

Работает на Linux, MacOS и Windows

Источник

Читайте также:  Чем процедура отличается от функции питон

Как получить имя учётки

Как получить имя файла?
Подскажите пожалуйста, есть ли возможности получить не весь путь к файлу, а только его имя? .

Как получить имя файла из формы
Здравствуйте! Есть форма, на основе некоторой модели в котором такое поле: file =.

Как получить имя слайдера и его значение
Здравствуйте! Подскажите пожалуйста, как получить в print() два переменных, одну с имением.

Как в билдере получить с сервера (MySQL 5.1, имя базы «skola», имя table «info») имя столбцов и имя строк
Доброва времены суток Как в билдере получить с сервера (MySQL 5.1, имя базы "skola", имя table.

Эксперт PythonЭксперт Java

Эксперт PythonЭксперт Java

Эксперт PythonЭксперт Java

iSmokeJC, да я читал это, там люди не правильно используют формулировки, точнее раньше такого и не было до винды 10, они не имя пользователя выводят, а имя компа = логин учётки, а есть ещё имя учётки

import os print(__import__("os").getenv('username')) print(os.getlogin())

ЦитатаСообщение от iSmokeJC Посмотреть сообщение

Лучший ответ

Сообщение было отмечено RSAX как решение

Решение

import win32api import win32net user_properties = win32net.NetUserGetInfo(None, win32api.GetUserName(), 20) print(user_properties.get("full_name"))

ЦитатаСообщение от menreiven Посмотреть сообщение

хороши звери-даже без пипа импортнулись)) спс
я так понимаю, что кроме «full_name» ещё можно что-то заполучить-где глянуть? спс

Эксперт Python

ЦитатаСообщение от RSAX Посмотреть сообщение

Полное имя учетной записи было всегда.
Первые два способа выдают стандартный username залогинившегося пользователя.

>>> print(__import__("os").getenv('username')) Garry >>> import os >>> os.getlogin() 'Garry'

Последний — через winapi — полное имя (по сути никому не нужное). Я, например, это поле никогда не заполнял и оно у меня пустое.

>>> user_properties {'name': 'Garry', 'full_name': '', 'comment': '', 'flags': 66081, 'user_id': 1000} >>>

ЦитатаСообщение от RSAX Посмотреть сообщение

Логин и имя компа это разные вещи. Если у тебя они одинаковые, то это твои проблемы. Нужно было после магазина поменять.

Получить имя процесса (такое же как имя задачи в «Диспетчере задач»)
Здравствуйте! Пишу программу, которая будет отслеживать мои действия и собирать статистику по.

Получить имя моего процесса (получить имя меня)
Работает мой код. Мне нужно получить имя моего процесса — ***.exe

Как получить имя проекта
Добрый день, я пишу игровой движок, и щас пишу шаблон для VS. Еасть конфиг файл, в котором есть.

Как получить имя переменной?
Для отладки кода появилась необходимость получать имена переменных. Это я могу сделать но только.

Как получить имя столбца
Подскажите пожалуйста как получить имя столбца таблицы, запроса и вывести его в Debug.Print

Источник

Оцените статью