9

C#StreamWritierクラスを使用しています。質問:

  1. ファイルを読み取り専用にして、誰もファイルを削除したり書き込んだりできないようにするにはどうすればよいですか?
  2. 隠しファイルを作成するにはどうすればよいですか?

私は次のようにファイルを作成しています:

    private void button1_Click(object sender, EventArgs e)
    {
        SaveFileDialog save = new SaveFileDialog();
        save.FileName = textBox1.Text;
        save.Filter = "Text File | *.rtf";


        if (save.ShowDialog() == DialogResult.OK)
        {
            StreamWriter writer = new StreamWriter(save.OpenFile());
            writer.WriteLine(textBox2.Text);
        }

        writer.Dispose();
        writer.Close();
    }
4

4 に答える 4

12

こんにちは、この方法で試すことができます

1

 public static void SetFileReadAccess(string FileName, bool SetReadOnly)
 {
      FileInfo fInfo = new FileInfo(FileName);

      // Set the IsReadOnly property.
      fInfo.IsReadOnly = SetReadOnly;

 }

2

File.SetAttributes(yourFilePath, FileAttributes.Hidden);

……

于 2012-08-02T12:59:43.207 に答える
10

を使用して ReadOnly 属性を設定できますFile.SetAttributes

例:

File.SetAttributes(textBox1.Text, FileAttributes.ReadOnly);

これは読み取り専用フラグを設定するだけであり、NTFS アクセス制御リストを変更しないことに注意してください (つまり、すべての熟練したユーザーは読み取り専用属性を削除できます)。また、これによりファイルの他のすべての属性がリセットされることに注意してください。これは、とにかく新しいファイルを作成しているため、問題にはなりません。既存の属性を保持する必要がある場合は、File.GetAttributes最初に使用して、既存のフラグを新しいフラグと組み合わせます (リンクされた MSDN ページの例を参照してください)。


悪意のある書き込み試行からファイルを保護する必要がある場合は、NTFS セキュリティを理解する必要があります (多くのリソースの「NTFS セキュリティ」は google)。それを理解したら、次の質問で C# でそれらを変更する方法がわかります。

于 2012-08-02T12:58:28.857 に答える
5

これを読み取り専用ファイルに使用します。

FileAttributes yourFile = File.GetAttributes(yourFilePath);
File.SetAttributes(yourFilePath, FileAttributes.ReadOnly);

「yourFilePath」は文字列です。

隠しファイルの場合:

FileAttributes yourFile = File.GetAttributes(yourFilePath);
File.SetAttributes(yourFilePath, FileAttributes.Hidden);

通常のファイル (読み取り専用でも隠しファイルでもない) の場合:

FileAttributes yourFile = File.GetAttributes(yourFilePath);
File.SetAttributes(yourFilePath, FileAttributes.Normal);

通常のファイルの設定を求めていないことは知っていますが、これを知っておくと便利だと思います。

于 2012-08-02T13:07:47.577 に答える