Brak znajomości hasła komplikuje sprawę , ale może rozwiązaniem jest: czy można tymczasowo usunąć hasło użytkownika? (A potem zresetuj go do tego, co było wcześniej.)
Na początek:
Najpierw wyświetl okno logowania. Po prostu wyloguj się z bieżącego użytkownika, użyj szybkiego przełączania użytkowników lub użyj SSH:
cd "/ System / Library / CoreServices / Menu Extras / User.menu / Contents / Resources /"
sudo ./CGSession -suspend
Lub, aby od razu przejść do konkretnego użytkownika, który prawdopodobnie wyświetli okno logowania (to nagle nie działa już na moim 10.5 Leopardzie):
sudo ./CGSession -switchToUserID 501
To, co się teraz pokazuje, zależy trochę od Preferencji systemowych, ale załóżmy, że są to ikony użytkowników i ich nazwy. Aby aktywować nazwę, musielibyśmy wpisać pierwsze litery. Następnie po powrocie pojawia się monit o hasło. Alternatywnie można wybrać dowolną nazwę (np. Naciskając Strzałkę w dół), a następnie nacisnąć klawisz Option-Return, aby wyświetlić monit o podanie dowolnej nazwy użytkownika i hasła. Nie wiem, jak rozpoznać, który ekran jest wyświetlany, ale zapiszmy to na później ...
Tak więc, aby wybrać pierwszą (losową) nazwę użytkownika i nacisnąć Option-Return, wpisz konkretną nazwę użytkownika, naciśnij Return i wpisz hasło:
sudo osascript -e 'powiedz aplikacji „System Events”
kod klucza 125
naciśnięcie klawisza Return przy użyciu opcji w dół
naciśnięcie klawisza „nazwa użytkownika”
opóźnienie 1.0
powrót z klawisza
opóźnienie 1.0
naciśnięcie klawisza „hasło”
opóźnienie 1.0
powrót z klawisza
koniec powiedz „
Powyższe pokazuje błąd, który, o ile wiem, nie ogranicza użycia:
osascript [285]: 3891612: (connectAndCheck) Niezaufane aplikacje nie są
wolno się połączyć lub uruchomić Windows Server przed zalogowaniem.
_RegisterApplication (), NIE POWIODŁO SIĘ, aby ustanowić domyślne połączenie z
WindowServer, _CGSDefaultConnection () ma wartość NULL.
Możesz też użyć skryptu specyficznego dla języka z „ Skryptuj okno logowania za pomocą Pulpitu zdalnego Apple ” (może kiedyś komentarze na tej stronie pokażą lepsze rozwiązanie):
powiedz procesowi „SecurityAgent”
ustaw wartość pola tekstowego 1 grupy 1 okna 1 na „nazwa użytkownika”
ustaw wartość pola tekstowego 2 grupy 1 okna 1 na „hasło”
koniec powiedz
kliknij przycisk „Zaloguj się” w oknie 1 procesu aplikacji „SecurityAgent”
Ale głównym problemem jest to, że nadal potrzebuje hasła . Jednak: oczywiście hasło nie jest potrzebne, gdy użytkownik ma puste hasło. W rzeczywistości dla pustych haseł wystarczy kliknięcie ikony użytkownika. Tak więc, jeśli wysyłanie naciśnięć klawiszy przy użyciu AppleScript jest dopuszczalne, być może „wszystko” pozostaje do ustalenia:
Czy można tymczasowo wyczyścić hasło użytkownika, aby umożliwić rozpoczęcie (lub wznowienie) sesji bez znajomości tego hasła ...?
Czy można uczynić AppleScript odpornym na błędy? Lubić:
- Jak stwierdzić, czy okno logowania jest widoczne? (być może
stat -f%Su /dev/console
może pomóc, ponieważ ustępuje,root
gdy wyświetlane jest okno logowania)
- Jak stwierdzić, które okno logowania jest wyświetlane? (Na przykład: jedna z ikonami i nazwami logowania lub listą rozwijaną, a może tylko monit o hasło, jeśli ktoś zdecydował się na przełączenie na określonego użytkownika?)
- Pozbądź się opóźnień.
- Co z tym komunikatem o błędzie?
(Uwaga do testowania: podczas korzystania z udostępniania ekranu wydaje się, że ustawienie preferencji Podczas kontrolowania komputerów: Szyfrowanie haseł i naciśnięć klawiszy zachowuje również połączenie, gdy wyświetlane jest okno logowania lub po pomyślnym zalogowaniu użytkownika. Podczas korzystania z funkcji Szyfruj całą sieć dane, a następnie mój Mac musi ponownie nawiązać połączenie Udostępniania ekranu za każdym razem, gdy wyświetlane jest logowanie lub użytkownik jest przełączany).