Odpowiedzi:
Edycja: od 10.7.4 pole wyboru „Ponownie otwieraj okna podczas ponownego logowania” pozostało niezaznaczone, jeśli odznaczysz je raz, więc poniższe hacki nie są już potrzebne.
Jedną z opcji jest ustawienie wartości LoginwindowLaunchesRelaunchApps
false na ~/Library/Preferences/com.apple.loginwindow.plist
:
defaults write com.apple.loginwindow LoginwindowLaunchesRelaunchApps -bool false
Możesz również zapisać tę listę właściwości jako ~/Library/LaunchAgents/logout_saves_state.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
<key>Label</key>
<string>logout_saves_state</string>
<key>ProgramArguments</key>
<array>
<string>defaults</string>
<string>write</string>
<string>com.apple.loginwindow</string>
<string>TALLogoutSavesState</string>
<string>-bool</string>
<string>false</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Następnie załaduj listę właściwości, uruchamiając launchctl load ~/Library/LaunchAgents/logout_saves_state.plist
lub wylogowując się i ponownie logując.
TALLogoutSavesState
czasami wyzerowałem się, gdy wylogowałem się i wróciłem, więc defaults write com.apple.loginwindow TALLogoutSavesState -bool false
jednorazowe uruchomienie nie zadziałałoby.
Żadna z tych opcji tak naprawdę nie powoduje zaznaczenia pola wyboru, ale mają ten sam efekt.
Ten błąd został naprawiony w aktualizacji Lion 10.7.4 :
Aktualizacja OS X Lion 10.7.4 zawiera poprawki, które:
Rozwiąż problem, w którym ustawienie „Otwórz ponownie okna po ponownym zalogowaniu” jest zawsze włączone.
Nie, zawsze jest ustawione na „włączone”. Istnieje jednak skrypt, który można uruchomić, który wyłącza tę funkcję. Pole będzie nadal zaznaczone, ale funkcja nie będzie już działać:
Wklej następujące elementy w jednym wierszu w terminalu:
curl http://goo.gl/Z4EFC -L -s -o ~/fixlogin.sh && chmod +x ~/fixlogin.sh && sudo ~/fixlogin.sh ; rm ~/fixlogin.sh
To polecenie pobiera skrypt, umieszcza go w odpowiedniej lokalizacji, umożliwia jego wykonanie, a następnie usuwa plik tymczasowy. Jeśli zastanawiasz się, zawartość pobranego skryptu bash jest następująca:
#!/bin/bash
echo "#!/bin/bash" > /tmp/loginfix.sh
echo "rm /Users/*/Library/Preferences/ByHost/com.apple.loginwindow.*" >> /tmp/loginfix.sh
mv /tmp/loginfix.sh /usr/bin/loginfix.sh
chmod +x /usr/bin/loginfix.sh
defaults write com.apple.loginwindow LoginHook /usr/bin/loginfix.sh
Jeśli kiedykolwiek chcesz przywrócić domyślne zachowanie tej funkcji OS X Lion, po prostu wpisz następującą domyślną komendę write:
sudo defaults delete com.apple.loginwindow LoginHook
Wrócisz, aby móc wybrać przywracanie okna na podstawie wyboru tego pola wyboru.
Źródło: http://osxdaily.com/
Zmieniło się to w aktualizacji Mac OS X w wersji 10.7.4.
Rozwiąż problem polegający na tym, że ustawienie „Otwórz ponownie okna po ponownym zalogowaniu” jest zawsze włączone.
Oto nowa opcja, jak widać (chociaż nie jest to dowód sam w sobie, ponieważ łatwo ją odznaczyć, a następnie przechwycić ekran, ale proszę mi zaufać - byłem bardzo zaskoczony, gdy sprawdziłem tę aktualizację, ponieważ ten błąd był naprawdę denerwujący mnie!)
W przypadku Mojave żadna z powyższych opcji nie działała dla mnie, jednak ktoś inny wspomniał o tym i wystarcza mi:
Zamknij wszystkie okna oprócz terminalu i uruchom:
chflags uimmutable $HOME/Library/Preferences/ByHost/com.apple.loginwindow.*
Terminal i Finder będą teraz jedynymi aplikacjami, które zostaną otwarte przy ponownym uruchomieniu.
Dla przypomnienia mówimy o tym:
Problem polega na tym, że OS X nie pamięta, jeśli odznaczysz pole wyboru przy ostatnim zamknięciu - zawsze pozostawi pole wyboru domyślnie zaznaczone przy kolejnych zamknięciach.
Znalazłem dwa różne rozwiązania tego problemu , które wydają się załatwić sprawę, chociaż nie są idealne.
Otwórz Terminal.app i wprowadź następujące polecenia:
defaults write com.apple.loginwindow TALLogoutSavesState -bool false
defaults write com.apple.loginwindow LoginwindowLaunchesRelaunchApps -bool false
To skutecznie wyłącza opcję „ponownie otwieraj okna podczas ponownego logowania”, chociaż pole wyboru nadal będzie zaznaczone. Możesz to zignorować.
Obawiam się, że nie ma lepszego rozwiązania, przynajmniej w tej chwili.
Możliwe jest również wyłączenie Wznów dla poszczególnych aplikacji .
Istnieje również ustawienie systemowe, które umożliwia wyłączenie go dla wszystkich aplikacji w całym systemie. Przejdź do Preferencji systemowych → Ogólne :
Alternatywnie możesz uruchomić to polecenie w Terminal.app:
# Disable Resume system-wide
defaults write NSGlobalDomain NSQuitAlwaysKeepsWindows -bool false
TALLogoutSavesState
czasami jednak resetuje się do wartości true po wylogowaniu i ponownym zalogowaniu. defaults write com.apple.loginwindow TALLogoutSavesState -bool false
będzie musiał zostać uruchomiony przy logowaniu przy użyciu uruchomionego agenta lub czegoś takiego.
LoginwindowLaunchesRelaunchApps
ustawieniem. Pamiętam, jak testowałem je osobno, w którym to przypadku natknąłem się na problemy opisane w odpowiedzi. AFAICT, jest coś w połączeniu dwóch ustawień, które załatwi sprawę.
defaults read com.apple.loginwindow TALLogoutSavesState
wróciłem 1
.
TALLogoutSavesState
nadal sama staje się prawdziwa. Ale tylko LoginwindowLaunchesRelaunchApps -bool false
sam wydaje się wystarczający, aby wyłączyć przywracanie systemu Windows.
Odznaczenie opcji „Ponownie otwórz okna podczas ponownego logowania” nie rozwiązało problemu. Aplikacje nadal były otwierane po ponownym uruchomieniu ze skryptu Apple Script lub po wyłączeniu polecenia w terminalu.
Działa w macOS El Capitan, Yosemite, Sierra, High Sierra.
Rozwiązanie: odmów dostępu OS X do pliku, którego używa do przechowywania stanu sesji. Zapobiega ponownemu otwarciu aplikacji nawet po ponownym uruchomieniu / zamknięciu z terminala , z AppleScript i awarii systemu.
Cmd+Shift+G
(Idź do folderu)~/Library/Preferences/ByHost/
i potwierdźcom.apple.loginwindow
Locked
wyboru)Jeśli chcesz później cofnąć tę zmianę i ponownie włączyć tę funkcję, po prostu usuń ten plik, a system operacyjny go odtworzy.
Cmd+Shift+G
(Idź do folderu)~/Library/Preferences/ByHost/
i potwierdźcom.apple.loginwindow
Utwórz plik należący do roota (w przeciwnym razie system operacyjny po prostu go zastąpi)
sudo chown root ~/Library/Preferences/ByHost/com.apple.loginwindow*
Usuń wszystkie uprawnienia, aby nie można było ich odczytać ani zapisać
sudo chmod 000 ~/Library/Preferences/ByHost/com.apple.loginwindow*
Ponownie włącz opcję „otwórz ponownie wszystkie aplikacje” po zalogowaniu
sudo rm -f ~/Library/Preferences/ByHost/com.apple.loginwindow*