Ş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.