Как мне получить имя пользователя или домашний каталог вошедшего в систему пользователя, когда я являюсь root?

#macos #core-foundation

#macos #ядро-основа

Вопрос:

Мое приложение запускается от имени root пользователя, но было запущено от обычного пользователя (администратора), например, с помощью sudo команды (но не обязательно, т.Е. Я не могу просто проверить SUDO_USER , например, env var).

Как я могу определить имя пользователя или его домашний каталог, который зарегистрирован в сеансе пользовательского интерфейса?

Есть ли функция Cocoa, Foundation или CoreFoundation, которая может предоставить мне эту информацию?

Комментарии:

1. Может быть, если вы добавили ‘родительскую’ переменную? Кто знает, может быть, код поможет.

Ответ №1:

Похоже, что переменная среды «HOME» остается установленной для вошедшего в систему пользователя, даже для приложений, работающих под управлением пользователя root. Итак, вот как получить домашнюю папку для этого пользователя:

 NSString *homeDir = NSProcessInfo.processInfo.environment[@"HOME"];