Как узнать имя пользователя python windows
Обновлено: 05.07.2024
Существует ли портативный способ получить имя пользователя текущего пользователя в Python (т. Е. Тот, который работает как в Linux, так и в Windows, по крайней мере). Это будет работать так os.getuid :
Я гуглил вокруг и был удивлен, что не нашел окончательного ответа (хотя, возможно, я просто плохо гуглил). Модуль pwd обеспечивает относительно простой способ достижения этого, скажем, в Linux, но его нет в Windows. Некоторые результаты поиска показали, что получение имени пользователя в Windows может быть сложным в определенных обстоятельствах (например, запуск в качестве службы Windows), хотя я этого не проверял.
import pwd, os; print pwd.getpwuid(os.getuid()).pw_gecos или import pwd, os; print pwd.getpwuid(os.getuid()).pw_name @MattBruzek Это был пункт OP там. Он представлял, как можно вызвать такую функцию, если она существует.Посмотрите на модуль getpass
Доступность: Unix, Windows
ps На комментарий ниже " эта функция просматривает значения различных переменных среды для определения имени пользователя. Поэтому на эту функцию не следует полагаться в целях контроля доступа (или, возможно, в любых других целях, поскольку она позволяет любому пользователю выдавать себя за любое другое ). "
Похоже, что эта функция просматривает значения различных переменных среды, чтобы определить имя пользователя. Поэтому на эту функцию не следует полагаться для целей контроля доступа (или, возможно, для любых других целей, поскольку она позволяет любому пользователю выдавать себя за любого другого). В getpass.getuser () нет ничего плохого, поскольку он не претендует на аутентификацию пользователя. Цель этой функции - определить, кем является пользователь, не спрашивая его напрямую. Это не работает, если вы сделали su. $ echo $ USER hithwen $ su julia Пароль: $ echo $ USER julia $ python >>> import getpass >>> getpass.getuser () 'hithwen' @GregHewgill поднимает очень хороший вопрос, но, действительно, поиск имени пользователя простым неаутентифицированным способом, подобным этому, имеет некоторые приложения. Мой текущий вариант использования: пометка некоторых общих ресурсов тестирования именем пользователя для легкой очистки позже. (Так что легче выяснить, чей беспорядок чей.) И я согласен с @GregHewgill в целях контроля доступа, но совершенно не согласен с «любыми другими целями» - это все равно что сказать «Не используйте $ USER в сценарии оболочки». Отличная особенность контроля доступа, но есть множество других применений, которые не связаны с аутентификацией.Лучше всего было бы сочетать os.getuid() с pwd.getpwuid() :
Обратитесь к документации по pwd для более подробной информации:
В качестве альтернативы (немного приятнее читать) pwd.getpwuid(os.getuid()).pw_name . Что это делает в Windows? Возможно, можно попробовать это, и если это не удастся, вернитесь к дурацким методам 'getpass / env var'. Это правильный путь, если вам нужно получить имя пользователя как во время входа, так и без него. Этот метод в unix-подобных системах намного превосходит ответ Константина Тензина, потому что он sudo правильно обрабатывает случай. (Я знаю, что OP не просил Unix-подобные системы.)Вы также можете использовать:
В linux getlogin () возвращает имя «пользователя, вошедшего в систему на управляющем терминале процесса». Поэтому происходит сбой, когда нет управляющего терминала, например, в приложении mod_python. работает на windows . Python 3.4.1 (v3.4.1: c0e311e010fc, 18 мая 2014, 10:38:22) [MSC v.1600 32 бит (Intel)] на win32 Тип «помощь», «авторское право», «кредиты» или «лицензия» для получения дополнительной информации. >>> импорт ОС; os.getlogin () 'jrb'Вы, вероятно, можете использовать:
Но это не будет безопасным, потому что переменные среды могут быть изменены.
Да, именно USER vs USERNAME - это то, что не является переносимым, поэтому не дает правильного ответа.Это может сработать. Я не знаю, как они ведут себя при работе в качестве службы. Они не переносимы, но для этого os.name и if нужны заявления.
Этот ответ, по крайней мере, так же полезен, как и (бесполезный) 25-голосовый голос только для Unix. > "По крайней мере, так полезно" Согласен. Предположительно, правильный ответ - это сочетание двух. Если вы застряли на Python 2 в Windows, это единственный безопасный способ сделать это. Все остальные способы можно обмануть, запустив SET USERNAME=FAKE перед командой pythonЕсли вам это нужно, чтобы получить домашний каталог пользователя, ниже можно считать переносимым (по крайней мере, win32 и linux), частью стандартной библиотеки.
Также вы можете проанализировать такую строку, чтобы получить только последний компонент пути (т.е. имя пользователя).
Чей-то домашний каталог не всегда отражает его имя пользователя. К сожалению, если вы установите переменную HOME в Windows, это вернет это значение.Для меня использование os модуля выглядит лучше всего для переносимости: лучше всего работает как на Linux, так и на Windows.
Дом пользователя Dir: C: \ Users \ myuser
имя пользователя: myuser
Дом пользователя Dir: / root
имя пользователя: root
Нет необходимости устанавливать какие-либо модули или расширения.
Это решение разумно, но делает некоторые предположения, которые не всегда верны. Нет ограничений, требующих, чтобы имя пользователя отображалось в пути homedir в Linux. Просто так бывает в большинстве случаев, но системный администратор может установить домашний каталог пользователя так, как ему хочется.Совмещенный pwd и getpass подход, основанный на других ответах:
Для UNIX, по крайней мере, это работает .
редактировать: я только что посмотрел, и это работает на Windows и UNIX:
В UNIX он возвращает ваше имя пользователя, но в Windows он возвращает группу вашего пользователя, косую черту, ваше имя пользователя.
UNIX возвращает: «имя пользователя»
Windows возвращает: «домен / имя пользователя»
Это интересно, но, вероятно, не идеально, если вы все равно что-то делаете в терминале . в этом случае вы, вероятно, будете использовать os.system для начала. Например, некоторое время назад мне нужно было добавить своего пользователя в группу, что я и сделал (это в Linux, заметьте)
Мне кажется, что это легче читать, и вам не нужно импортировать pwd или getpass.
Я также чувствую, что наличие «домен / пользователь» может быть полезным в некоторых приложениях в Windows.
Есть ли переносимый способ получить текущее имя пользователя пользователя в Python (то есть тот, который работает как под Linux, так и Windows, по крайней мере). Он будет работать как os.getuid :
Я googled вокруг и был удивлен, чтобы не найти окончательного ответа (хотя, возможно, я плохо искал Google). Модуль pwd обеспечивает относительно простой способ достижения этого, скажем, Linux, но его нет в Windows. Некоторые из результатов поиска предполагали, что получение имени пользователя под Windows может быть затруднено в определенных обстоятельствах (например, выполняется как служба Windows), хотя я еще не подтвердил это.
ОТВЕТЫ
Ответ 1
Доступность: Unix, Windows
p.s. В комментарии ниже "эта функция просматривает значения переменных среды для определения имени пользователя. Поэтому эту функцию нельзя использовать для целей контроля доступа (или, возможно, для любой другой цели, поскольку она позволяет любому пользователю выдавать себя за другое)."
Ответ 2
Лучше всего было бы объединить os.getuid() с pwd.getpwuid() :
Для получения дополнительной информации обратитесь к документам pwd:
Ответ 3
Вы также можете использовать:
Ответ 4
Вы, вероятно, можете использовать:
Но это не будет безопасным, потому что переменные среды могут быть изменены.
Ответ 5
Это может сработать. Я не знаю, как они ведут себя при работе в качестве службы. Они не переносимы, но для этого предназначены операторы os.name и if .
Ответ 6
Если вам нужно это, чтобы получить домашний каталог пользователя, ниже можно считать переносимым (win32 и linux как минимум), частью стандартной библиотеки.
Также вы можете проанализировать такую строку, чтобы получить только последний компонент пути (то есть имя пользователя).
Ответ 7
Мне, используя модуль os , лучше всего подходит для переносимости: лучше всего работает как на Linux, так и на Windows.
Пользовательский дом Dir: C:\Users\myuser
имя пользователя: myuser
Пользовательский дом Dir:/root
имя пользователя: root
Не нужно устанавливать какие-либо модули или расширения.
Ответ 8
Комбинированный подход pwd и getpass , основанный на других ответах:
Ответ 9
Для UNIX, по крайней мере, это работает.
изменить Я просто просмотрел его, и это работает в Windows и UNIX:
В UNIX он возвращает ваше имя пользователя, но в Windows он возвращает вашу группу пользователей, косую черту, ваше имя пользователя.
UNIX возвращает: "имя пользователя"
Windows возвращает: "domain/username"
Это интересно, но, вероятно, не идеально, если вы ничего не делаете в терминале. в этом случае вы, вероятно, используете os.system для начала. Например, некоторое время назад мне нужно было добавить моего пользователя в группу, поэтому я сделал (это в Linux, заметьте)
Мне кажется, что читать легче и, вам не нужно импортировать pwd или getpass.
Мне также кажется, что "домен/пользователь" может быть полезен в некоторых приложениях в Windows.
Ответ 10
(для Windows требуется расширение win32)
Ответ 11
Вы можете получить текущее имя пользователя в Windows, пройдя через API Windows, хотя это немного громоздко для вызова через ctypes FFI (GetCurrentProcess → OpenProcessToken → GetTokenInformation → LookupAccountSid).
Я написал небольшой модуль, который может сделать это прямо из Python, getuser.py. Использование:
Он работает как с Windows, так и с * nix (последний использует модуль pwd , как описано в других ответах).
Ответ 12
Использование только стандартных библиотек Python:
Работает в Windows, Mac или Linux
Кроме того, вы можете удалить одну строку с помощью немедленного вызова:
Ответ 13
Самый простой способ получить текущее имя пользователя - это определенно username .
Как получить имя файла из формы
Здравствуйте! Есть форма, на основе некоторой модели в котором такое поле: file =.
Получить имя моего процесса (получить имя меня)
Работает мой код. Мне нужно получить имя моего процесса - ***.exe
Как получить имя столбца
Подскажите пожалуйста как получить имя столбца таблицы, запроса и вывести его в Debug.Print
Решение
хороши звери-даже без пипа импортнулись)) спся так понимаю, что кроме "full_name" ещё можно что-то заполучить-где глянуть? спс Полное имя учетной записи было всегда.
Первые два способа выдают стандартный username залогинившегося пользователя.
Последний - через winapi - полное имя (по сути никому не нужное). Я, например, это поле никогда не заполнял и оно у меня пустое.
Логин и имя компа это разные вещи. Если у тебя они одинаковые, то это твои проблемы. Нужно было после магазина поменять.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как получить имя кнопки?
Есть 5 кнопок, у всех 1 общее событие onClick, как с помощью его определить какая кнопка была.
Как Получить Имя Поля ?
Добрый день ! Помогите решить задачку. На форме много изменяемых полей Если пользователь удалит.
Как получить имя переменной?
Для отладки кода появилась необходимость получать имена переменных. Это я могу сделать но только.
Как получить имя компьютера
Как получить имя компьютера? Если указывать %UserName% выбивает ошибка вот код procedure.
Как получить имя файла?
Я загружаю файл на сервер. Как мне занести в переменную имя файла?
Как получить имя фотографии?
Добрый день подскажите пожалуйста как узнать имя фотографии? Проблема в следующем. Делаю фото.
Чтобы просто посмотреть IP-адрес и другие настройки сети, тебе придется обратиться к командной строке и выполнить команду ipconfig / all . Ситуация одна из самых частых для эникейщиков и удаленных шаманов, но она хотя бы быстро решаема. Но если придется собирать более серьезный набор информации о машине, с которой сейчас будешь работать, — без автоматизации не обойтись. Этим мы сегодня и займемся.
Имей в виду, что эта программа может использоваться как для быстрого сбора информации о своей системе, так и для кражи идентифицирующей информации с компьютера жертвы. Мы граждане законопослушные, поэтому пусть это и не пароли, но, чтобы не раздражать правоохранителей, все тесты будут проводиться на изолированных виртуальных машинах.
warning
Несанкционированный доступ к компьютерной информации — преступление. Ни автор, ни редакция журнала не несут ответственности за твои действия.
Инструменты
Сначала давай разберемся, где будем писать код. Можно кодить в обычном виндовом «Блокноте», но мы воспользуемся специальной IDE для Python — PyCharm. Установка и настройка просты как два рубля: скачал установщик, запустил — и кликай себе «Далее», пока есть такая кнопка.
Еще нам потребуется Python. Я буду использовать версию 3.9.0 — с ней точно все работает.
Задачи
Давай сначала обрисуем, что мы вообще планируем делать. Я планирую собирать следующую информацию:
- IP-адрес.
- MAC-адрес.
- Имя пользователя.
- Тип операционной системы.
- Скорость работы системы.
- Время.
- Скриншот.
- Скорость интернет‑соединения.
- Модель процессора.
И отправляться это все будет прямиком тебе в телегу через специальный бот.
Зачем?
Наверняка у тебя возник вопрос: зачем может понадобиться MAC-адрес или модель процессора? Эти параметры меняются очень и очень редко, так что прекрасно подходят для фингерпринтинга. Даже если пользователь купит более быстрый интернет‑канал или поменяет часовой пояс, ты без особого труда сможешь определить, что уже имел дело с этим компьютером. Стоит помнить, что ровно такие же методы используют хитрые рекламщики для идентификации пользователей, да и разработчики триальных версий программ тоже. Эта статья поможет чуть лучше понять, что можно узнать о твоем компьютере в полностью автоматическом режиме, а как применить эту информацию — решать только тебе.
В этой статье мы не будем показывать, как сформировать устойчивый к незначительным изменениям идентификатор, который поможет однозначно определить конкретный компьютер. Если тебе станет интересно — пиши в комментариях, и, возможно, мы сделаем большой гайд на эту тему!
Создаем основу программы
Для отправки данных я решил воспользоваться Telegram-ботом. Создать его ты можешь через BotFather, а после сохранить token твоего творения. Публиковать его нельзя — любой, кто получит этот токен, сможет захватить контроль над твоим ботом.
Для подключения к Bot API «телеги» нужны всего две строчки:
Чтобы оценить быстродействие, можно написать еще пару строк. Весь дальнейший код расположим между ними. Описанное выше подключение бота уже вписано сюда.
Читайте также: