アプリケーションはファイルを読み取ることができますが、ユーザーアプリケーションは実行できません

アプリケーションはファイルを読み取ることができますが、ユーザーアプリケーションは実行できません

ユーザーがファイルをコピーできないように (読み取り権限なし)、しかしそのユーザーで実行されているアプリケーションがそのファイルを読み取ることができるように、ファイルの権限を設定することは可能ですか?

そうではないと思いますが、100% 確信はありません。アプリケーションがそれを読み取るためには、それを実行しているユーザーに読み取り権限が必要ですか?

おそらくそのようなことは Windows ポリシーで設定できるのでしょうか?

答え1

アプリケーションはユーザー権限で実行されるため、ユーザーがファイルを読み取ることができない場合はファイルを読み取ることができません。

アプリケーションを実行しているユーザーの代わりに別のユーザーになりすますプロセスを設定することもできます。このプロセスには異なる権限が与えられている可能性があります。これはかなりの作業量になりますが、これを実装する方法によっては、ユーザーはなりすましに使用された資格情報を検索するだけなので、いずれにせよその権限をユーザーに与えることになります。

別のアプローチとしては、ユーザーがファイルを含むディレクトリの内容を一覧できないようにチェックすることです。ユーザーには読み取り権限があるため、ファイルを開くことは可能です。このアプローチでは、不明瞭なアクセスを阻止しないでください。

答え2

それはユーザーの技術レベルに依存します。もしユーザーが十分な知識を持っているなら、答えは「いいえ」です。しかし、プログラムからアクセスできるものの、ユーザーが実際のファイルの内容を見るのを「防ぐ」さまざまな難読化トリックを使うことができます。難読化の最も簡単な方法は(私見ですが)代替データストリーム(ADS) %AppData% のどこか

何を達成しようとしているのか明確にしていただけますか?私たちがあなたに提案できるより良い解決策があるかもしれません

答え3

ユーザーが管理者権限なしでアプリケーションを実行すると、アプリケーションはファイルにアクセスできなくなります。

ユーザーが管理者としてアプリケーションを実行すると、プログラムはファイルにアクセスできるようになりますが、ユーザーはアクセスできません。管理者として実行されるアプリケーションにははるかに多くの権限があり、実用的ではない場合があることに注意してください。

より良い方法は、アプリケーションの動作やファイルへのアクセス方法をどの程度制御できるかに応じて、ファイルを非表示にするか、別の方法で保存することです。

たとえば、データ自体をネットワーク上にあるデータベース内に保存したり、サーバーがファイルをクライアントに送信し、クライアントがそれを表示して完了時にコピーを削除するサーバー-クライアント通信を行ったりすることができます。本質的には、これは Web サーバーと同じくらい簡単です。ユーザーがファイルを開くと、それを保存してアクセスできることに注意してください。Web ページ内に埋め込まれたファイルを表示することで、それを防ぐことができます。

関連情報