私は、ドロップボックスによく似たプログラムに取り組んでいますが、ビジネスのためにローカルで使用しています。一部のユーザーが一部のファイル/ディレクトリに書き込めない場合でも、ローカルに書き込めるように設定しています。それは大きな問題ではありません。ファイル/ディレクトリを再ダウンロードすることはできますが、ロックできればいいのですが。(ただし、それでも読む必要があります)
2 に答える
私はいくつかの解決策を考えることができます:
アプリケーションでファイルを読み取り専用として開いたままにします。これにより、ファイルの数が大きくなると、いくつかの問題が発生する可能性があります。メモリまたはハンドル制限のいずれかで、いくつかの上限に達する可能性があります。
ハンドル制限に関する情報については、この優れた Technet ブログを参照してくださいhttp://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx
NTFS アクセス許可を使用します。アプリケーションを別のユーザーとして実行し、ファイルの所有権を取得して、他のユーザーに読み取り専用アクセスを許可すると、役立つはずです。あなたはビジネス環境にいるので、アプリケーションをサービスとして、または起動時に実行することをそのレベルで制御できる場合があります。
NTFS アクセス許可に関する素敵な SO 投稿 C#.NET での NTFS アクセス許可の設定
File.SetAttributes メソッドを使用して読み取り専用属性を設定することをお勧めします。
ファイルを読み取り専用に設定するには:
File.SetAttributes(@"C:\Users\Owner\Desktop\file.txt", FileAttributes.ReadOnly);
ファイルを通常の状態に戻すには:
File.SetAttributes(@"C:\Users\Owner\Desktop\file.txt", FileAttributes.Normal);
ファイルが読み取り専用かどうかを確認してから、エラーをスローできます。
System.IO.FileInfo fileInfo = new System.IO.FileInfo(@"C:\Users\Owner\Desktop\file.txt");
if (fileInfo.IsReadOnly)
{
//...Alert user that this file cannot be deleted
}
else
{
//... Delete the file here
}