2

いろいろなところから相反する報告を受けています。Engadget のレビューでは、InputManager プラグインは完全に無視されている (アプリケーションが 32 ビット モードでロードされている場合は奇妙な動作を引き起こす) と書かれていますが、このメーリング リストのスレッドでは、32/64 ビットの互換性が適切であれば機能すると述べています。

だから私は2つの質問があります:

  • Snow Leopard で InputManagers を使用することはできますか?
  • はいの場合、Leopard と同じように機能しますか。いいえの場合、どのような回避策がありますか (1Password が修正に取り組んでいるようです)。
4

4 に答える 4

3

やろうとしていることを達成するために本当にコードをアプリケーションに注入する必要がある場合は、mach_injectを使用してください。

また、将来、より安全な方法でソフトウェアを実装できるように、フックを要求するバグを報告してください。

于 2009-08-30T02:07:09.893 に答える
3

http://developer.apple.com/releasenotes/Cocoa/AppKit.html#NSInputManager

InputManagers フォルダーにあるバンドルの自動読み込みは、正式にサポートされなくなりました。有効な入力マネージャー バンドルの条件がさらに厳しくなりました。この機能は、将来のリリースで無効になる可能性があります。

  1. 有効なインストールは、/Library/InputManagers フォルダーのみに制限されるようになりました。他の場所にあるバンドルは黙って無視されます。

  2. バンドル内のすべてのファイルと /Library/InputManagers フォルダー自体は、root ユーザーおよび管理者グループによって所有されている必要があります。バンドル内のファイルは、グループまたはその他の書き込み権限を持つことはできません。

  3. root 特権 (getuid() == 0 または geteuid() == 0) で実行されているプロセスは、バンドル入力マネージャーをロードできません。

  4. wheel グループ特権で実行されているプロセスは、バンドル入力マネージャーをロードできません。

  5. プロセスは、バンドルのロード時にアクティブなワークスペース セッションにある必要があります。

  6. ユーザーまたはグループ ID (issetugid() でチェック) を変更してプロセスを汚染してはなりません。

  7. 64 ビット プロセスは、バンドル入力マネージャーをロードできません。

于 2009-08-27T15:47:33.040 に答える
1

1Password 3.0 は、代わりに Safari のブラウザ プラグイン APIを利用することで、InputManager の必要性を回避しています。リンクされた記事では、InputManager に代わるさまざまなコード インジェクションの非常に実用的な比較も提供しています。

于 2009-09-01T11:32:05.327 に答える