2009-08-11 3 views
2

私は、特定のファイルをディレクトリに保存するwindowsアプリケーションを持っています。私は方法がある場合は、私は直接(Windowsでそのディレクトリに移動し、ファイルをつかむことによって)にアクセスすることができないように制限することができます.netだけで私のアプリケーションを追加/確認/削除することができますそのディレクトリ内のファイル。.netアプリケーションでのみ使用できるディレクトリを制限する

答えて

1

.NetでIsolated Storageを使用できますか?一方、それは必ずしもあなたのユーザーから制限されているわけではありませんが、それは見つけるのがもっと難しいかもしれません....(ログインしたユーザーのローカル設定\アプリケーションデータ\独立したストレージに格納)

コードを使用して、System.Io.IsolatedStorageを使用して/インポートし、ディレクトリ、ファイルなどを作成できます。正常です。

また、実際のディレクトリをHDで管理する必要はありません.Netではこれを管理しています。多分いい素敵です。

+0

実際それが私が探していたものでした。私はそれが簡単にアクセス可能になるリスクを減らすと思います。しかし、偶然にそのディレクトリが見つかると、簡単に移動してコピー&ペーストできます。私は正しい? – paradisonoir

+0

真ですが、ディレクトリは隠されているので、ほとんどのユーザーはエクスプローラの設定を混乱させ、かなり深い(OSのどこにあるのかによって隠されていない)場合を除いて、 実際、どこにいるのかは決して覚えていません。 :) – klabranche

+0

もし彼らがそれを見つけたら、私は彼らが何をしているのか尋ねているでしょうか?私に少しハッキングのように聞こえる..... – klabranche

1

これは、アプリケーションを実行しているユーザーとは異なる資格情報でアプリケーションを実行する場合にのみ可能です。

デフォルトでは、すべてのアプリケーションは、プロセスを起動したユーザーの資格情報で実行されます。これは、アプリケーションのディレクトリとファイルの制限がユーザーと同じであることを意味します。別のアカウントがなければ、アプリケーションはファイルシステムにアクセスする能力を低下させ、増加させることはできません。

ファイルシステムを扱うのは一般的に悪です。ユーザーがそのディレクトリでプレイしないようにすることができたとしても、結果を信じることはできません。結果は、あなたが残したのとまったく同じ状態になります。他のユーザー、物理ディスクの破損など、ファイルが破損する可能性があります。

ファイルシステムを健全にプログラムする唯一の方法は、最初から失敗が予想され、実際に動作したときには幸運に思うことです。

+0

ご迷惑をおかけしていただきありがとうございます。 – paradisonoir

+0

@paradisonoir、私はあなたのアプリケーションについてもっと知る必要があります。しかし、単純に言えば、ファイルシステムが信頼できるものであるとは思わないでください。それが機能すれば、代わりにそれをボーナスと考えてください。その特定の概念について計画を立て、そこから行ってください。 – JaredPar

+0

@ JaredPar、確かに、私はさまざまなアプローチを使用しようとしています。 – paradisonoir

1

アプリケーションは特定のユーザーとして実行する必要があります。そのユーザーは常にアプリケーションと同じ権限を持ちます。管理者として実行されるサービスを作成して、標準ユーザーがディレクトリにアクセスできないようにすることはできますが、管理者は引き続きディレクトリ内のものを変更することができます。

私はあなたの問題の別のアプローチを探すことをお勧めします。潜在的な選択肢があります。おそらく、ディレクトリの内容に暗号化されたハッシュを保存することを検討する必要があります。そうすれば、内容が変更されていないことを確認することはできますが、変更が発生しないようにすることはできません。

+0

あなたの迅速な答えをありがとう。これは、私のファイルのハッシュ暗号化を保存することができることを意味し、その後私はそれらをより良く制御することができます。私は制限されたディレクトリを持つことは絶対に怪しいことを理解しています。 – paradisonoir

-1

FileSystemWatcherを見てください。これはディレクトリの変更を防ぐものではありませんが、dirの変更についてプログラムに通知することができます。

0

他にも言及したように、アプリケーションは現在ログインしているユーザーとは異なるユーザーとして行動する必要があります。 '偽装'を調べる必要があります。特定のタスクを実行し、別のユーザー:

http://csharptuning.blogspot.com/2007/06/impersonation-in-c.html

http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

+0

これはすべて素晴らしいヒントと例です。私の問題は単にファイルをコピーしてファイルを取りたいときです。 – paradisonoir

+0

ユーザーにファイルへのアクセス権を与えないでください。ファイルに対してアクションを実行し、アプリケーションでそのユーザーを偽装できる別のユーザーを作成します。そうすれば、ログインしたユーザーはファイルで何もできなくなりますが、アプリケーションはそれを行うことができます。 –

0

最も簡単な方法(どのような方法で固定していないが)、ユーザーがについて何も知らない隠しフォルダを、使用することです。 so \ servername \ hiddenfiles $

さらに安全な方法は、プログラムがフォルダにアクセスするために使用している資格情報を変更することです。彼ら自身がそれにアクセスする必要がありますか?

代わりに、パスワードを知らないユーザーごとにダミーアカウントを作成することもできます。 Windowsのログインに関係するようにしてください。そうすれば、domain \ mynameはdomain \ mynamehiddenになります。次に、これを使用してディレクトリに接続します。
これは、すべてがうまく監査できることを保証します。

+0

ファイル自体にアクセスすべきではありません。 – paradisonoir

+0

したがって、2番目と3番目のオプションは正常に動作し、2番目のオプションは実装が最も簡単です。 – Bravax

関連する問題