0

私が取り組んでいるアプリケーションでは、Linux、OSX、および Windows [Vista] で特定の保護されたファイルを編集する機能が必要です。通常、アプリケーションが昇格された権限で何かを実行する必要がある場合、パスワード要求ダイアログが表示され、アプリケーションが管理者としてこれらの操作を実行できるようにするかどうかをユーザーに確認するよう求められます。

一般的に、Windows Vista はマニフェスト ファイルを使用し、OSX には認証ライブラリ ( https://developer.apple.com/mac/library/documentation/Security/Reference/authorization_ref/Reference/reference.html ) があり、Linux にはさまざまな sudo フロントエンド。

これを処理する一般的に受け入れられるクロスプラットフォームの方法はありますか? アプリケーションを root ユーザーとして実行する必要はありませんが、読み取り/書き込み操作のために保護されたファイルを開き、通常のユーザー モードに戻ることができるようにしたいと考えています。

4

1 に答える 1

0

Windows Vista では、基本的に、管理アクションを実行するための専用プロセスが必要です。ご指摘のとおり、管理者が有効なプロセスには、要求された実行レベルを指定するためのマニフェストが必要です (詳細については、このMSDN の記事を参照してください)。

昇格なしで起動し、「昇格」自体をサポートする Windows アプリケーションをよく見ると、管理者特権が必要になると、実際にはまったく新しいプロセスが開かれることがわかります (たとえば、UAC が有効になっているときにタスク マネージャーに移動し、「すべてのユーザーのプロセスを表示する」を選択し、管理者権限で再オープンする方法に注意してください)。

したがって、Windows の場合、おそらく必要なアーキテクチャには 2 つのプロセスが必要です。ほとんどの作業を行う標準プロセスと、管理操作を行うために呼び出す管理プロセスです。2 つのプロセスは、標準プロセスに代わって管理作業を実行できるように、何らかの安全な手段 (おそらく安全な名前付きパイプ)を介して通信する必要があります。

このアプローチは、他のプラットフォーム間で一般化できる可能性があり、プラットフォーム固有の詳細が漏れる必要がないように、ある種のクラス/インターフェイスで抽象化できる可能性があります。

于 2009-09-10T04:33:58.187 に答える