Насколько я знаю, на самом деле это невозможно. В зависимости от того, как много вы знаете о среде пользователей, следующий может быть обходным путем, однако:
Команды
qwinsta
даст вам список сеансов для компьютера. В течение этих сеансов один из них будет активным, поэтому, если эта программа используется в интерактивном сеансе, в основном это будет содержать «зарегистрированный пользователь», как вы его описали (это намного сложнее, может быть, многие пользователи вошли в систему но только один может быть активным, и я просто надеюсь, что вы знаете достаточно о сценарии использования вашей программы, чтобы использовать это). Вы можете анализировать выходные данные и работать с этим именем пользователя.
Конечно, это грязный хак, и он предполагает, что во время выполнения вашей задачи нет никаких шансов, что пользователи изменятся.
Кроме того, хотя я выбрал qwinsta.exe, потому что это очень простой подход, который не требует вызовов API или что-то еще, я все еще не уверен, обладает ли CMD достаточными возможностями синтаксического анализа, чтобы получить необходимую информацию для вас.
Можете ли вы пояснить, что подразумевается под «в настоящее время зарегистрированным пользователем»? Вы ограничиваете это консолью? Подключены ли подключения к удаленным рабочим столам? Если это серверная ОС, как бы вы выбрали между RDP-чиллерами? – mojo
не уверен, потому что не может попробовать в данный момент, но выполняет ли 'tasklist/v | find" explorer.exe "' help? – Stephan
Возможный дубликат * [Как найти текущего пользователя в среде Windows?] (Http://stackoverflow.com/questions/1607271/how-do-you-find-the-current-user-in-a- окна-среда) *. –