31

アクセス拒否の質問全体を徹底的に検索しましたが、自分のシステムでの Windows フォームへのアクセスに関連する質問は見つかりませんでした。すべての質問は Web アプリに関連しています。

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        byte[] imgdata;
        FileStream fsrw;
        string fname;
        openFileDialog1.Filter = "Sai Files(*.JPG;*.GIF)|*.jpg;*.gif|All files (*.*)|*.*";
        openFileDialog1.ShowDialog();//opens the dialog box
        fname = openFileDialog1.FileName;//stores the file name in fname
        pictureBox1.ImageLocation = fname;//gives the image location to picturebox
        fsrw = new FileStream("C:\\Users\\Sainath\\Desktop", FileMode.Open, FileAccess.ReadWrite);
        imgdata = new byte[fsrw.Length];
        fsrw.Read(imgdata, 0, Convert.ToInt32(fsrw.Length));
        fsrw.Close();
        string s = "insert into imagetest values(@p1,@p2)";
        SqlConnection con = new SqlConnection("server=.;Data Source=.;Initial Catalog=Work;Integrated Security=True");
        SqlCommand cmd = new SqlCommand(s, con);
        cmd.Parameters.AddWithValue("@p1", imgdata);
        cmd.Parameters.AddWithValue("@p2", fname);
        con.Open();
        int i = cmd.ExecuteNonQuery();
        con.Close();
        Console.WriteLine(i);
    }
}
4

5 に答える 5

1
  1. 宛先とソースの両方のファイル名を含む完全修飾名を使用してください。(例: C:\Source\file.ext、C:\Destination\file.ext)

  2. Visual Studio は、アクセスしようとしているフォルダーと同じアクセス権で実行する必要があります。"マイ ドキュメント" など、昇格されたアクセス権を必要としない場所にアクセスしようとしても、Visual Studio を昇格する必要はありません。

  3. VS を実行している同じユーザーから通常アクセスできるファイルやフォルダーのアクセス許可を「取得」または変更する必要はありません。

ソースへのリンク: ここにリンクの説明を入力します

于 2014-05-14T11:31:04.600 に答える
1

ファイルの読み取り専用フラグ (オンに設定されている場合) により、FileStream および MemoryMappedFile オブジェクトがファイルを開いて読み取ることができなくなることがわかりました。解決策は 2 つあります。読み取り専用のチェックを外すか、FileStream/MemoryMappedFile を変更して FileMode.Read/MemoryMappedFileAccess.Read で開くようにします。FileStream のデフォルトの読み取り/書き込み動作は読み取り/書き込みです。

于 2019-05-16T01:05:21.033 に答える