回答:
編集:10.7.4以降、一度ログインを解除すると、[ログイン時にウィンドウを再度開く]チェックボックスがオフのままになったため、以下のハックは不要になりました。
1つのオプションは、LoginwindowLaunchesRelaunchApps
キーをfalseに設定することです~/Library/Preferences/com.apple.loginwindow.plist
:
defaults write com.apple.loginwindow LoginwindowLaunchesRelaunchApps -bool false
このプロパティリストを~/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>
次に、実行するlaunchctl load ~/Library/LaunchAgents/logout_saves_state.plist
か、一度ログアウトして再度ログインすることにより、プロパティリストをロードします。
TALLogoutSavesState
ログアウトして再度ログインすると、時々trueにリセットされるため、defaults write com.apple.loginwindow TALLogoutSavesState -bool false
一度実行しただけではうまくいきませんでした。
これらのオプションはどちらも、実際にはチェックボックスをオフにして表示しませんが、同じ効果があります。
このバグは、Lionアップデート10.7.4で修正されました。
OS X Lion v10.7.4アップデートには、次の修正が含まれています。
「ログイン時にウィンドウを再度開く」設定が常に有効になる問題を解決します。
いいえ、常に「オン」に設定されています。ただし、機能を無効にする実行可能なスクリプトが存在します。ボックスは引き続きチェックされますが、機能は機能しなくなります。
以下をターミナル内の1行に貼り付けます。
curl http://goo.gl/Z4EFC -L -s -o ~/fixlogin.sh && chmod +x ~/fixlogin.sh && sudo ~/fixlogin.sh ; rm ~/fixlogin.sh
このコマンドは、スクリプトをダウンロードし、適切な場所に配置して実行可能にし、一時ファイルを削除します。ご参考までに、ダウンロードしたbashスクリプトの内容は次のとおりです。
#!/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
このOS X Lion機能のデフォルトの動作に戻したい場合は、次のデフォルトの書き込みコマンドを入力してください。
sudo defaults delete com.apple.loginwindow LoginHook
そして、そのチェックボックスの選択に基づいてウィンドウの復元を選択できるようになります。
ソース:http : //osxdaily.com/
記録のために、我々はこれについて話している:
問題は、OS Xは最後のシャットダウン時にチェックボックスのチェックを外しても記憶しないことです。それ以降のシャットダウンでは、デフォルトでチェックボックスが常にチェックされたままになります。
私はこの問題の2つの異なる解決策を見つけました。それらは理想的ではありませんが、トリックを行うようです。
Terminal.appを開き、次のコマンドを入力します。
defaults write com.apple.loginwindow TALLogoutSavesState -bool false
defaults write com.apple.loginwindow LoginwindowLaunchesRelaunchApps -bool false
これにより、「ログイン時にウィンドウを再度開く」オプションが事実上無効になりますが、チェックボックスはチェックされたままになります。無視しても構いません。
少なくとも現時点では、より良い解決策はないのではないかと心配しています。
システム全体のすべてのアプリに対して無効にできるシステム設定もあります。[ システム環境設定] →[ 一般]に移動します。
または、Terminal.appで次のコマンドを実行できます。
# Disable Resume system-wide
defaults write NSGlobalDomain NSQuitAlwaysKeepsWindows -bool false
TALLogoutSavesState
ただし、ログアウトしてから再度ログインすると、trueにリセットされることがあります。defaults write com.apple.loginwindow TALLogoutSavesState -bool false
ログイン時にlaunchdエージェントなどを使用して実行する必要があります。
LoginwindowLaunchesRelaunchApps
設定と組み合わせて複数のログアウト/再起動を行った後でも、私にとってはうまくいくようです。この2つを別々にテストしたことを覚えています。その場合、回答で説明した問題に遭遇しました。AFAICT、この2つの設定の組み合わせには何かトリックがあります。
defaults read com.apple.loginwindow TALLogoutSavesState
戻って、戻ってきました1
。
TALLogoutSavesState
それ自体でtrueに設定されます。しかし、LoginwindowLaunchesRelaunchApps -bool false
ウィンドウの復元を無効にするには、それだけで十分のようです。
「ログイン時にウィンドウを再度開く」のチェックを外しても、問題は解決しませんでした。Apple Scriptからの再起動後、またはターミナルのシャットダウンコマンドを使用して、アプリがまだ再起動していました。
macOS El Capitan、ヨセミテ、シエラ、ハイシエラで動作します。
解決策:セッション状態の保存に使用するファイルへのOS Xアクセスを拒否します。Terminal、AppleScript、およびシステムクラッシュからの再起動/シャットダウンの後でも、アプリを再度開くことを防ぎます。
Cmd+Shift+G
(フォルダーに移動)~/Library/Preferences/ByHost/
して確認com.apple.loginwindow
Locked
ボックスをオンにします)後でこの変更を取り消して機能を再度有効にする場合は、このファイルを削除するだけでOSによって再作成されます。
Cmd+Shift+G
(フォルダーに移動)~/Library/Preferences/ByHost/
して確認com.apple.loginwindow
ルートが所有するファイルを作成します(それ以外の場合、OSは単にファイルを置き換えます)。
sudo chown root ~/Library/Preferences/ByHost/com.apple.loginwindow*
すべての権限を削除して、読み取りまたは書き込みができないようにします
sudo chmod 000 ~/Library/Preferences/ByHost/com.apple.loginwindow*
ログイン後に「すべてのアプリを再度開く」を再度有効にします
sudo rm -f ~/Library/Preferences/ByHost/com.apple.loginwindow*