none
バイナリデータの保存について RRS feed

  • 質問

  • いつもお世話になっております。バイナリデータをファイル(bta,binなどの)保存をしたいのですが、なかなかうまくいきません。

    下記のようにしたら

    パス "C:\WINNT\system32\testhong.bta" へのアクセスが拒否されました。

    エラーが出現します。解決の方法を教えていただけますでしょうか?

    宜しくお願いします。

      protected System.Web.UI.WebControls.Button Button1;
      protected System.Web.UI.WebControls.TextBox TextBox1;
      byte[] bytes;

      private void Page_Load(object sender, System.EventArgs e)
      {
       string str = "あいうえお";

       Encoding sjisEnc = Encoding.GetEncoding("euc-jp");
       bytes = sjisEnc.GetBytes(str);
       TextBox1.Text = BitConverter.ToString(bytes);
       // 出力:A4-A2-A4-A4-A4-A6-A4-A8-A4-AA
      }

      private void Button1_Click(object sender, System.EventArgs e)
      {
       FileStream fs = new FileStream("testhong.bin", FileMode.OpenOrCreate);
       fs.SetLength(0);
       BinaryWriter w = new BinaryWriter(fs);
       w.BaseStream.Seek(0,SeekOrigin.Begin);
       w.Write(bytes);
       w.Close();
       fs.Close();

      }

    2006年5月15日 2:08

すべての返信

  • プログラムの前に調べなくてはならないことがあります。

    今使っているOSとログオンしているユーザの権限はなんでしょうか(WINNTだからWindows 2000かな)?また、CドライブはNTFSでフォーマットされているでしょうか?

    NTFSでフォーマットされている場合、system32ディレクトリへのファイル追加はadministrator権限が必要になるはずです(古いSPから更新していたり、FAT→NTFS変換した場合はその限りではないこともあります)。既にあるファイルへの更新ならPower Userでも大丈夫です。

    一度c:\winnt\system32ディレクトリのファイル(なんでもいいです)のプロパティを開いて、セキュリティタブをみてください。

    2006年5月15日 2:20
  • ご返信ありがとうございました。

    KKamegawa 様のアドバイスを参考にアプローチしてみました。

    OSはWindows 2000で一般ユーザの権限になっています。VS.NET2003の起動だけはadministrator権限になっています。c:\winnt\system32のディレクトリのセキュリティタブを確認してみたら、アクセス拒否になっているのがわかりました。Power Userの権限にし直して再度行ってみたいと思います。

    ありがとうございました。

     

     

    2006年5月15日 2:43
  • ちょっと待って!!

    なぜ書き込みできないのかよーく考えて。

    そこに書き込むべきでないから書き込めないのであってユーザ情報は適切な場所に書き込むようにしましょう。

    2006年5月15日 2:54
  • ASP.NETからファイルを書き込もうとされているのですよね?
    この場合、ASP.NETの実行ユーザに対してファイルの書き込み権限を与える必要があります。
    Windows2000ということなので、そのマシンのASPNETというユーザがASP.NETの実行ユーザになっていると思います。

    なお、匿名認証でなかったり、偽装等を行ったりしている場合、実行ユーザが異なっていることがあります。
    そういった場合は適切なユーザに対してアクセス権を与えるようにしてください。

     

    2006年5月15日 2:56
  • と、ああ、system32以下か。。。
    ファイルの保存場所については考え直したほうがいいですね。

     

    2006年5月15日 2:57
  • 中さん、どっとねっとふぁんさんのコメントにもあるように、通常system32ディレクトリ配下にユーザデータを書き込むのはやめたほうがいいです。

    私が思いつかない事情でsystem32配下に書かなくてはならないのか…ともおもって、最初のコメントでは書きませんでしたが、Program Files配下とか%SYSTEMROOT%配下への書き込みは気をつけましょうということで。

    2006年5月15日 6:25
  • 皆さん、お返事ありがとうございました。

    アドバイスを参考に、うまくいくようになりました。

    ありがとうございます。

     

    2006年5月17日 3:59