Şu anda oturum açmış olan kullanıcıyı OS X GUI'de nasıl öğrenebilirsiniz?


11

Makinede belirli bir kullanıcının, özellikle de grafik kullanıcı arabirimini kullanan kullanıcının oturum açıp açmadığını bulmaya çalışmak .

Bu komut satırı üzerinden mümkün mü?


1
GUI ve komut satırını mı bekliyorsunuz? Her ikisi de? Yoksa sadece komut satırı? Kafam karıştı.
— Vervious

@ Nano8Blazex, soruyu sizin için daha açık hale getirdi.
— gak

: D bu harika!
— Vervious

Yanıtlar:


19

GUI:

  • Sistem Tercihleri'nde Hesaplar tercih bölmesini açın . Önceden seçilen kullanıcı hesabı etkin kullanıcı hesabı olacaktır.
  • Hızlı kullanıcı değiştirme etkinse ekstra menüsü (menü çubuğunun sağ tarafındaki menü) etkin kullanıcının adını gösterecek şekilde yapılandırılabilir.

Komut satırı:

  • Sahibini kontrol et /dev/console

    stat -f '%u %Su' /dev/console
    
  • Resmi API'yi kullanan bir program yazın ( SCDynamicStoreCopyConsoleUser ; aşağıya bakın)

Bir C programında:

Teknik Soru ve Cevap QA1133'teki C kodu : Konsol kullanıcı oturum açma durumunu belirleme, hangi kullanıcının etkin GUI oturumuna sahip olduğunu nasıl belirleyeceğini gösterir.

Örneğin:

/* Adapted from QA1133:
 *    http://developer.apple.com/mac/library/qa/qa2001/qa1133.html
 */
#include <assert.h>
#include <SystemConfiguration/SystemConfiguration.h>

int main(int argc, char **argv) {
    SCDynamicStoreRef store;
    CFStringRef name;
    uid_t uid;
#define BUFLEN 256
    char buf[BUFLEN];
    Boolean ok;

    store = SCDynamicStoreCreate(NULL, CFSTR("GetConsoleUser"), NULL, NULL);
    assert(store != NULL);
    name = SCDynamicStoreCopyConsoleUser(store, &uid, NULL);
    CFRelease(store);

    if (name != NULL) {
        ok = CFStringGetCString(name, buf, BUFLEN, kCFStringEncodingUTF8);
        assert(ok == true);
        CFRelease(name);
    } else {
        strcpy(buf, "<none>");
    }

    printf("%d %s\n", uid, buf);

    return 0;
}

Bkz. Manpage getlogin.
— Itachi

stat -f '% u% Su' / dev / console mükemmel çalışıyor. Teşekkür ederim
— Akshat

7

Komut satırı üzerinden whove usersçalışması gerekir.


Ah, whove "konsol" u arayın. Teşekkürler.
— gak

1
@Gerald: whoHızlı kullanıcı değiştirmeyi kullanırken 10.4 sistemimde kullanmak doğru değil (şu anda kullandığım sistem GUI oturumum aktif olsa bile “konsol” da başka bir kullanıcıyı gösteriyor). Belki yeni sürümlerde daha güvenilirdir.
— Chris Johnsen

@JohnT: Giriş yapmış 2 kullanıcınız varsa (kullanıcı değiştirme), who komutu hem 'console' ile ilişkili kullanıcıları listeler. Bu düzgün çalışmıyor.
— Akshat
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.