2018年1月3日 星期三

無法停用 “伴隨系統啟動TeamViewer”

在安裝完 TeamViewer 後,會在 /Library/LaunchDaemons  (表示其為由管理員定義的系統守護行程) 新增一個 com.teamviewer.teamviewer_service.plist,並且設定為開機自動啟動。


 TeamViewer 的喜好設定中的一般設定畫面中,顯示 TeamViewer 是隨著系統啟動的


在 com.teamviewer.teamviewer_service.plist 會有下面的設定:

<key>Disabled</key>
<false/>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>

如果使用 LaunchControl 則可以看到 com.teamviewer.teamviewer_service 為啟動 (Enabled) 而且狀熊為執行中 (Running)。


 com.teamviewer.teamviewer_service 為啟動 (Enabled) 而且狀熊為執行中 (Running)



如果在 TeamViewer 的一般設定中取消核可 “伴隨系統啟動TeamViewer”,在 com.teamviewer.teamviewer_service.plist 中
<key>Disabled</key> 會變成 <true/>,但是 <key>KeepAlive</key>
的值還是 <true/> (TeamViewer 的 plist 檔同時還設了  RunAtLoad 的值為 true),會造成重新開機時 TeamViewer 還是會伴隨系統啟動。是一個不正確的 plist 檔。

而在 LaunchControl 中可以看到 com.teamviewer.teamviewer_service 的狀態為 Disabled 而且 Unloaded,但是事實上我們在執行取消核可 “伴隨系統啟動TeamViewer”時,TeamViewer 還是在執行中。





因為不想要 “伴隨系統啟動TeamViewer”,試過將 com.teamviewer.teamviewer_service.plist 中的 KeepAlive 以及  RunAtLoad 的設定移除或是改為 false,可是在每次重啟 TeamViewer 後,這兩個設定又被還原回去了。

後來找到了原因了,是因為覆寫資料庫 (/var/db/com.apple.xpc.launchd/disabled.plist) 中,鍵值被改為 false 了。使用下列的指令將 disabled.plist 改為 true, TeamViewer 應該就不會伴隨系統啟動了:

sudo launchctl unload -w /Library/LaunchDaemons/com.teamviewer.teamviewer_service.plist

可是這樣,每次要開啟 TeamViewer 時都要執行:

sudo launchctl load -w /Library/LaunchDaemons/com.teamviewer.teamviewer_service.plist


不然 launchd 無法載入服務。

沒有留言: