Как вы находите текущего пользователя в среде Windows? - PullRequest
143 голосов
/ 22 октября 2009

При запуске сценария командной строки можно ли получить имя текущего пользователя? ОС Windows XP.

Ответы [ 12 ]

0 голосов
/ 09 марта 2017

Поскольку ответ BlueBearr является наилучшим (хотя я запускаю свой пакетный скрипт, например, с правами SYSTEM), я должен что-то добавить к нему. Поскольку в моей языковой версии для Windows (польском) строка, которую нужно отследить с помощью "%% a %% b" == "Имя пользователя:", становится ОЧЕНЬ СЛОЖНОЙ (она содержит некоторые диакритические знаки на моем языке), я пропускаю первые 7 строк и оперировать 8-м.

@for /f "SKIP= 7 TOKENS=3,4 DELIMS=\ " %%G in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do @IF %%G==%COMPUTERNAME% set _currdomain_user=%%H
0 голосов
/ 18 мая 2013

В стандартном контексте каждый подключенный пользователь содержит процесс explorer.exe: команда [tasklist / V | find "explorer"] возвращает строку, содержащую владельца процесса explorer.exe, с адаптированным регулярным выражением, которое можно выполнить получить требуемое значение. Это также отлично работает под Windows 7.

В редких случаях файл explorer.exe заменяется другой программой, фильтр поиска можно адаптировать к этому случаю. Если команда возвращает пустую строку, вероятно, ни один пользователь не вошел в систему. В Windows 7 также можно запустить [запрос сеанса | найти ">"].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...