3

わかりました。PDFファイルを表示するためにAdobeActiveXコントロールを使用するアプリケーションを作成しました。

Adobe ActiveXコントロールは、ファイルシステムからのみファイルをロードします。したがって、このコントロールにファイルパスをフィードする必要があります。

問題は、PDFファイルをファイルシステムに保存したくないということです。一時的なイベント!PDFファイルをメモリにのみ保存した​​くないので、AdobeActiveXコントロールを使用したいと思います。

だから私は必要です:

1)ファイルシステム上でファイルを偽造する方法。したがって、このコントロールはファイルがあると「考え」ますが、メモリからロードします

2)1つのアプリケーションにのみ「表示」されるファイルシステム上にファイルを作成する方法。これにより、PDFコントロールがファイルをロードでき、他のユーザーにも表示されなくなります。

3)何か他のもの

PS:私は「宿題を終える」ことを求めているのではなく、ただ求めているだけです。これを行う方法はありますか?

4

3 に答える 3

5

あなたはほとんどそれをすることができます(つまり、あなたはできませんが、あなたは近い何かをすることができます)。

でファイルを作成すると、原則として一時的にファイルが作成されますFILE_ATTRIBUTE_TEMPORARY ただし、十分なバッファキャッシュがある限り(ファイルが数十から数百メガバイトでない限り、通常は常にそうです)、システムはディスクに書き込みません。これは偶然に発生するだけでなく、このフラグの実際に指定された動作です。

さらに、0共有モードとして指定するFILE_FLAG_DELETE_ON_CLOSEと、ファイルが開いていることを誰かが知っていても、開いたままにしている限り、他のプロセスがファイルを開くことができなくなり、ファイルを閉じるとファイルが「消えます」。アプリケーションがクラッシュした場合でも、OSは背後でクリーンアップします(DRMが理由である場合)。スーパーパラノイアモードで、ファイルが存在するときにシステムのブルースクリーンが心配な場合は、保留中の移動を追加でスケジュールすることもできます。これにより、システムがクラッシュした場合に、起動中にファイルが削除されます。

最後に、NTFSを指定すると、任意のファイルまたはディレクトリに、ランダムで、できれば一意の名前(たとえば、ドキュメントのSHA1またはUUID)を使用して代替ストリームを作成できます。ディレクトリ上の代替ストリームは...一種の厄介なハックですが、完全に合法であり、問​​題なく機能し、エクスプローラーには表示されません。これにより、ファイルが実際に非表示になるわけではありませんが、ほぼ表示されます(とにかく、ほとんどすべての実用的な側面で)。あなたが善良な市民であるなら、あなたはそのようなことのためにシステム一時フォルダを使いたいでしょう、あなたが書くべきではないプログラムフォルダや他の場所ではありません。
代替ストリームの作成も非常に簡単です。通常のファイル名またはディレクトリ名を使用し、コロン(:)と必要なストリームの名前を追加するだけです。追加のAPIは必要ありません。

それ以外はちょっと大変です。もちろん、いつでもramdiskのようなものを作成することができます(ただし、非表示にするのは難しいでしょう)。または、メモリからのストリーム関数の1つを使用して、ファイルの申し立てでアプリケーションをだましてメモリバッファーから読み取るようにすることもできます。 ...しかし、それは些細なことではありません。

于 2012-04-20T10:28:44.263 に答える
1

別のアプリケーションに渡すためにファイルシステム上に何かが必要な場合、それを非表示にしたり、特定のプロセスに制限したりすることはできません。アプリが表示できるものはすべて、同じ特権レベルの他のすべてのものも表示/アクセスできます。あなたはそれをロックすることができるかもしれませんが、どのようにあなたが防御したいのかによって異なります。

ユーザーのPCは自分のものではなく自分のものであるため、ユーザーはそのPC上のすべてに完全にアクセスできます。

于 2012-04-20T10:32:41.250 に答える
1

仮想ディスクを作成し、その仮想ディスクへのアクセスを特定のアプリケーションのみに制限することができます。これを行うには、ファイルシステムドライバーまたはファイルシステムフィルタードライバーを作成する必要があります。どちらもカーネルモードで動作し、作成と保守が難しい。当社は、ドライバーを自分で作成することを避け、ユーザーモードでビジネスロジックを作成できるコンポーネントを提供しています(これらの製品でドライバーを提供しています)。

最も明白なオプションは、Adobe Readerの制御を取り除き、PDFを表示してメモリからロードできるサードパーティのコンポーネントを使用することです。

ただし、一般に、スマートハッカーは、(a)非標準のデータ形式がない限り、および/または(b)サーバーからデータを動的にストリーミングし、完全なデータをコンピューターに保持しない限り、データをキャプチャできます。これらも防弾ソリューションではありませんが、ハッカーの作業をはるかに困難にします。

于 2012-04-20T11:19:32.710 に答える