Jak wyłączyć proces Game Center (gra) w systemie OS X 10.11 El Capitan?

10

Wygląda na to, że nie mogę edytować pliku plist z LaunchAgents - nawet jeśli wykonam sudo, nie będę mógł usunąć ani zmienić. Czy muszę to koniecznie wyłączyć SIP, aby to zrobić?

jrgd
źródło
Próbowałeś i zobaczyłeś, co się dzieje?
Tetsujin

Odpowiedzi:

16

Wyłącz LaunchAgent (nie LaunchDaemons) i uruchom ponownie komputer ( bez sudo):

$ launchctl unload /System/Library/LaunchAgents/com.apple.gamed.plist

Jeśli chcesz włączyć go ponownie w jednym punkcie:

$ launchctl load /System/Library/LaunchAgents/com.apple.gamed.plist
frdmn
źródło
1
mówi: /System/Library/LaunchAgents/com.apple.gamed.plist: Nie mogę znaleźć określonej usługi Jestem na 10.11.2; dzieki za sugestie!
jrgd
Właśnie wypróbowałem to na moim komputerze i działało dobrze. Ten sam system operacyjny (10.11.2). Czy skopiowałeś i wkleiłeś polecenie z mojej odpowiedzi? Edycja: nie używajsudo
frdmn
tak, zrobiłem; sprawdź także w katalogu i czy plik plist jest tam… czy w przeszłości usunąłeś SIP / rootless?
jrgd
Nie, nie mam: paste.frd.mn/loyon - Widzisz tę usługę launchctl list?
frdmn
1
Nie ma za co!
frdmn
9

Zgodnie z tym wątkiem możesz wykonać:

defaults write com.apple.gamed Disabled -bool true

Aby sprawdzić bieżący stan demona, użyj:

defaults read com.apple.gamed Disabled
ccpizza
źródło
2

Jednym z rozwiązań jest utworzenie skryptu bash, aby zatrzymać usługę gry po zalogowaniu. Użyj Automatora w OS X, aby utworzyć skrypt bash, a następnie dodaj go jako element logowania do swojego konta OS X. Przy następnym logowaniu powinieneś otrzymać monit o wykonanie skryptu. Zwykle czekam, aż zobaczę powiadomienie Little Snitch, że gra jest telefoniczna, a następnie klikam „Kontynuuj”, aby uruchomić skrypt. Nie zostało to dopracowane i możesz napotkać problemy, jeśli uruchomisz je natychmiast po zalogowaniu się do OS X. Wolę trzymać się z dala od rozwiązań, które wyłączają usługę, ponieważ wymagają wyłączenia / zastąpienia SIP, odradzam.

Oto skrypt bash, którego używam. Wszelkie sugestie dotyczące ulepszenia są mile widziane.

    #!/bin/bash
        chkService=gamed
        chkCount=10
        chkStatus=$(ps ax | grep "$chkService" | grep -v grep | grep " T " | wc -l)
        while [ $chkStatus -ne 1 ]; do
            chkProcess=$(ps ax | grep -v grep | grep "$chkService" | wc -l)
            if [ $chkProcess -ne 0 ];
            then
                KILLALL -STOP "$chkService"
                chkCount=0
                chkStatus=$(ps ax | grep gamed | grep -v grep | grep " T " | wc -l)
            else
                SLEEP=1
                chkCount=$((chkCount-1))
            fi
        done
Le Sci
źródło
2

Problem polega na tym, że zaakceptowana odpowiedź podana powyżej:

launchctl unload /System/Library/LaunchAgents/com.apple.gamed.plist

nie działa. Widziałem to również za pomocą -wflagi. W każdym razie, w ostatnich aktualizacjach, myślę o El Capitan lub Yosemite, zamiast tego dostajesz wiadomość

Operacja niedozwolona, ​​gdy włączona jest ochrona integralności systemu

Ochrona integralności systemu znana jest również pod skrótem SIP. Aby go wyłączyć, musisz uruchomić system Recovery OS i uruchomić csrutil disable.

Zrobiłem tę sekwencję w poprzednich wersjach i doprowadziło to do możliwości wyłączenia gry za pomocą launchctlpolecenia.

Przypuszczam, że po wyłączeniu gry można ponownie włączyć SIP. Może to byłby najlepszy z obu światów, chociaż w sumie jest to żmudny proces.

Jeffrey Simon
źródło
0

co sudo launchctl unload /System/Library/Launch\ Daemons/com.apple.gamed.plist?

PEM8000
źródło
/ System / Library / Launch Daemons / com.apple.gamed.plist: Brak takiego pliku lub katalogu --- Jestem na 10.11.2 (dziękuję za sugestię)
jrgd
moje złe, to LaunchAgent: sudo launchctl unload / System / Library / Launch \ Agents / com.apple.gamed.plist
PEM8000,
dzięki; katalog to LaunchAgents na moim komputerze; po
wybraniu
0

w OS Sierra przejdź do Ustawień systemowych, kont internetowych i usuń (z minusem) Game Center z listy (po lewej stronie).

Marlon Shanhai
źródło
To tylko usuwa konto Game Center i nie wyłącza procesu gry. To pytanie dotyczy także El Capitan, a nie Sierra. Proszę zobaczyć Jak odebrać wskazówki, w jaki sposób zapewnić dobre odpowiedzi na pytania. - Z recenzji
fsb
0

Z punktu widzenia bezpieczeństwa nie robi to żadnej różnicy, ponieważ po prostu przywraca system dokładnie tak, jak działał przed SIP, i dokładnie tak, jak działają prawie wszystkie systemy uniksowe. Wartość SIP jest w najlepszym razie dyskusyjna. Odpowiada na to pytanie, ponieważ jedynym sposobem na użycie polecenia Launchctl do rozładowania pliku listy odtwarzania jest najpierw wyłączenie SIP, uruchomienie, rozładowanie pliku listy odtwarzania, a następnie, w razie potrzeby, ponowne włączenie SIP.

Mark Choi
źródło
0

Inną opcją, która działa w 10.11.6, jest odmiana metody sugerowanej przez @ Le-Sci. Utwórz skrypt powłoki, który wyłącza proces gry:

#!/bin/bash
sleep 30 && kill -9 "$(pgrep gamed)"

Polecenie uśpienia mówi skryptowi, aby poczekał 30 sekund przed rozpoczęciem procesu kończenia gry, aby dać systemowi wystarczająco dużo czasu na załadowanie gry przed próbą jej zakończenia; możesz dostosować czas oczekiwania w razie potrzeby. Polecenie „kill -9” wymusza zamknięcie żądanego procesu, ale akceptuje tylko numer identyfikacyjny procesu, a nie nazwę procesu, dlatego do wyszukania identyfikatora procesu służy „pgrep”. Zanotuj miejsce zapisania skryptu (w tym przykładzie zapiszę go jako „forceQuitGamed” w / Users / myaccountname /).

Daj uprawnienia do wykonywania skryptu:

sudo chmod +x ~/forceQuitGamed

Utwórz plik listy agenta uruchamiania, który będzie uruchamiany przy każdym logowaniu do konta. Jeśli wcześniej nie utworzyłeś pliku plist, możesz to zrobić za pomocą TextEdit. Plik skryptu musi być zapisany jako zwykły tekst, więc jeśli domyślne preferencje dla TextEdit wymagają formatowania tekstu sformatowanego, wykonaj polecenie Format> Utwórz zwykły tekst, aby przekonwertować na zwykły tekst, zanim spróbujesz użyć nowego pliku plist agenta uruchamiania.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.myaccountname.loginscript</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/myaccountname/forceQuitGamed</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Łańcuch w tablicy pod „ProgramArguments” to ścieżka / do / twojego / powłoki. Zapisz plik w ~ / Library / LaunchAgents /. W tym przykładzie nazwałem plik plist com.myaccountname.forceQuitGamed.plist, więc można go znaleźć pod adresem

/Users/myaccountname/Library/LaunchAgents/com.myaccountname.forceQuitGamed.plist

Teraz za każdym razem, gdy logujesz się na swoje konto, gra powinna być wymuszona po kilku sekundach od załadowania. (Jeśli potrzebujesz, aby została zakończona jak najszybciej po załadowaniu, spójrz na metodę @ Le-Sci.) To podejście działa bez konieczności wyłączania Ochrony integralności systemu.

Cam U
źródło
-4

Musisz najpierw wejść csrutil disablew Terminal w trybie odzyskiwania, a następnie ponownie uruchomić wprowadzić zmiany, ponownie uruchomić w trybie odzyskiwania i zrobić csrutil enable, uruchom ponownie.

Ale nie wiem, które procesy po modyfikacji wpłyną na rozruch w El Capitan

użytkownik169708
źródło
Umożliwia to logowanie roota. Co to ma wspólnego z grą?
Bez nazwy_1
Jest to naprawdę bardzo zły pomysł z punktu widzenia bezpieczeństwa i nie rozwiązuje tego pytania.
żal