2

私のアプリケーションには、ユーザーのハードディスクにデータを保存する Save メソッドがいくつかあります。アプリケーションがまだそのファイルにアクセス、変更、および削除できるようになったらすぐに、ユーザーがそのファイルにアクセス、変更、または削除できないようにするにはどうすればよいでしょうか?

可能な解決策は、保存フォルダーへのアクセス権を持たないが、アプリケーションに保存されているシステム管理者の事前定義されたユーザー名とパスワードを使用して、制限されたユーザーで管理者としてアプリケーションを実行することです。

UAC、アプリケーションマニフェストを操作するための他のトピックを読みました。

タイトルで述べたように、ユーザーの操作なしで管理者としてプログラムを実行することは可能ですか?

編集 1: すべてのバージョンの Windows (XP、Vista、および Seven) で動作するソリューションを探しています。

4

2 に答える 2

4

ACLの機能を調査したが、ACLをニーズに合わせることができないと思います。たとえば、すべてのユーザーがファイルを作成できるようにするACLを設定できます。また、すべてのユーザーが作成したファイルを変更または削除できますが、他のユーザーのファイルは変更または削除できません。


この問題を解決する正しい方法は、アプリケーションを2つの部分に分割することです。1つはWindowsサービス、Activate-As-Configured-User DCOMサーバー、またはその他の昇格されたプロセスとして実行されており、もう1つはdumb-old-userとして実行されています。

クライアントアプリケーションが昇格を必要とするアクションを実行したい場合、アプリケーションの昇格された半分にリクエストを渡します。これにより、必要なセキュリティチェックやアプリケーションロジックチェックなどが実行され、アクションが実行されます。

このようにして、ユーザーがバックドアを通り抜けてアプリケーションデータを台無しにするのを防ぐことができます。ただし、フロントドアからデータをめちゃくちゃにすることは実際には役に立ちません。

于 2012-04-08T19:40:07.563 に答える
0

@HarryJohnston はコメントで次のように述べています。

「あなたが求めていることを行うには、CreateProcessWithLogonW (既知の管理者ユーザー名とパスワードを使用) を使用して実際のアプリケーションを開始するランチャー アプリケーションを作成します。有能なユーザーは、管理者の資格情報を抽出し、次のようにログオンできることに注意してください。管理者. ベンの答え (分割アプリケーション) は適切なアプローチです."

そして、それは私の選択した答えです。

于 2012-04-10T09:37:28.090 に答える