MaC OS X 10.8 Mountain Lionのセキュリティとプライバシーの設定で、位置情報サービスからアプリケーションを削除したいと思いました。 (アンインストールされたにもかかわらず、アプリはまだリストされていました。)私は投稿 Mac OS X 10.7のセキュリティとプライバシーの位置情報サービスからアプリケーションを削除 を見つけ、正しい方向に進みました。 OS X 10.8.2 Mountain Lionに相当するものが私にとってはうまくいきました。主な違いは、clients.plistファイルの場所です。また、段階的なプロセスを提供したいと考えていました。
免責事項:これは私のために働いた。システムの適切なバックアップがあることを確認してください。このプロセスには、clients.plistファイルのバックアップの作成が含まれますが、安全を確保することはできません。
1.ターミナルを起動し、SudoをルートシェルにSudo -s
2./var/db/locationdに移動しますcd /var/db/locationd
3. clients.plistファイルのバックアップを作成しますcp -p clients.plist clients.plist.save
4. clients.plistをxmlに変換します(編集可能な形式)plutil -convert xml1 clients.plist
5. vi(vim)を使用して、clients.plistファイルを編集し、アプリケーションを削除します。vi clients.plist
ファイルには、多くのアプリケーションエントリが含まれている可能性があります。これは、単一のアプリケーションエントリ(この場合はSafari)の形式です。エントリ全体を削除する必要があります。
<key>com.Apple.Safari</key>
<dict>
<key>Authorized</key>
<true/>
<key>BundleId</key>
<string>com.Apple.Safari</string>
<key>Executable</key>
<string>/Applications/Safari.app/Contents/MacOS/Safari</string>
<key>LocationTimeStopped</key>
<real>376348187.80421197</real>
<key>Registered</key>
<string>/Applications/Safari.app/Contents/MacOS/Safari</string>
<key>RequirementString</key>
<string>identifier "com.Apple.Safari" and anchor Apple</string>
<key>Whitelisted</key>
<false/>
</dict>
6. clients.plistファイルをバイナリに変換しますplutil -convert binary1 clients.plist
7. locationdを再起動しますkillall locationd
アプリがまだ存在する場合は、次のようにPIDを決定した後、kill -9を使用してlocationdを再起動することを除いて、プロセスを再度実行します。 PIDは、ps出力の2番目のフィールドです。
ps -ef | grep locationd | grep -v grep
出力:205 427 1 0 6:31PM ?? 0:00.07 /usr/libexec/locationd
kill -9 427
このプロセスを2回実行して、一度に1つのアプリを削除しました。初めて、killallで十分でした。 2回目はそうではありませんでした。何故かはわからない。 locationdがキャッシュを保持し、clients.plistを再構築しているように機能しました。これは、killallを実行した後、さらには再起動時にもエントリがclients.plistに追加されたためです。根本的な原因が何であれ、kill -9を使用して問題を解決しました。
問題が発生した場合は、元のファイルをコピーして、locationdを再起動します。cp -p clients.plist.save clients.plist
killall locationd
(またはkill -9メソッド)
これがお役に立てば幸いです。乾杯!
Xcodeのプロパティリストエディターを使用して古いアプリのエントリを削除することもできますが、ファイルにアクセスするのが難しいため、一時的に権限を開く必要があります。
mini-nevie:~ root# chmod o+rwx /var/db/locationd/ /var/db/locationd/clients.plist
そのため、ディレクトリとファイルはすべてのユーザーが読み書きできます。次に、便宜上、ログインIDにsuします。
mini-nevie:~ root# su - nevinwilliams
mini-nevie:~ nevinwilliams$ open /var/db/locationd/clients.plist
これは、Xcodeが* .plistファイルを開くためのデフォルトのアプリであり、プロパティリストエディターに精通していることを前提としています。 Rootプロパティの下には、3つのデフォルトディクショナリエントリがあります。
com.appl
com.appl.locationd.executable-/usr/libexec/UserEventAgent
com.appl.aosnotifyd
それらは削除されるべきではありません。長い間使用されていないアプリに属するエントリの場合は、対応するアプリの行の[辞書]列の左側にカーソルを合わせると、灰色の反転「-」が表示されます。それをクリックすると、アイテムとそのすべての子が削除されます。最初にエントリを調べたい場合は、キー文字列の左側にある灰色の三角形(Finderリストビューユーザーによく知られている)をクリックすると、辞書が展開され、その要素が表示されます。
必要に応じてキーを削除または無効にしたら、ファイルを保存して、Xcodeを終了します。次に、ターミナルに戻り、次のようにします。
mini-nevie:~ nevinwilliams$ exit
logout
mini-nevie:~ root#
上矢印を2回押して、chmodコマンドを呼び出します。 ctrl-A 行の先頭に移動するには、 cursor-right 約8回、「+」を「-」に変更するか、次のように入力して、権限を元の状態に戻します。
mini-nevie:~ root# chmod o-rwx /var/db/locationd /var/db/locationd/clients.plist
次に、ロケーションデーモンをHUPします。
mini-nevie:~ root# killall -HUP locationd
security.PrefPaneの[プライバシー]タブを簡単に確認すると、変更を確認できます。
標準の免責事項、悲惨な警告、叱責、ぎくしゃくした言葉、「この旅行は本当に必要ですか?」反射は特に当てはまります。
これを行うための最も速く安全な方法は、OS Xコマンドラインユーティリティ tccutil によると思います
tccutil reset CoreLocationAgent
tccutil reset AddressBook
tccutil reset Reminders
tccutil reset Calendar
これですべてです。ところで、Sudoは必要ありません。
これは古いものであり、私が提案するソリューションは、投稿のソリューションと受け入れられたものと技術的に違いはありませんが、はるかに手間がかからず、自動化がはるかに簡単です(デバッグに役立ちます)。するだけ
/usr/libexec/PlistBuddy -c 'Delete <bundle-id>' /var/db/locationd/clients.plist
killall -HUP locationd
ルートとして。
以前の回答に加えて、この問題は、ファイルの所有権を修正した後にのみ解消されました。
# chown -R _locationd:_locationd /var/db/locationd/
# chmod 750 /var/db/locationd/
# chmod 644 /var/db/locationd/clients.plist
次に、コンピュータを再起動します。