2012-05-11 13 views
0

を拒否されて、私はDB.Uploadingにしてからドキュメントをアップロードして取得していますが 素晴らしい作品しかし、検索がエラー の原因となっているものである。ここSystem.UnauthorizedAccess例外:パスcへのアクセス:\

を取得するためのコードがあります
DataGridViewRow row = dataGridView1.CurrentRow; 
      int SelectedplantId = Convert.ToInt32(row.Cells["PId"].Value); 
      SQLiteConnection conn = new SQLiteConnection(connString); 
      conn.Open(); 
      string qry = "select Otherdocuments from Plant where PId = @PId"; 
      SQLiteCommand cmd = new SQLiteCommand(qry, conn); 
      cmd.Parameters.AddWithValue("@PId", SelectedpId); 

      byte[] buffer = (byte[])cmd.ExecuteScalar(); 
      conn.Close(); 

      //string filename = Application.StartupPath + "\\" + sFileName; 
      string SaveLocation = "C:" + "\\" + sFileName; 
      FileStream fs = null; 
      try 
      { 
       fs = new FileStream(SaveLocation,FileMode.Create); 
       fs.Write(buffer, 0, buffer.Length); 
      } 
      finally 
      { 
       if (fs != null) 
       { 
        ((IDisposable)fs).Dispose(); 
       } 
      } 

fs = new FileStream(SaveLocation、FileMode.Create);この例外が発生する場所です。

Stack Trace 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath) 
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) 
    at System.IO.FileStream..ctor(String path, FileMode mode) 
    at RVEST.frmPlant.btnRetrieveDocs_Click(Object sender, EventArgs e) in C:\D_Drive_Stuff\RVESTV2\RVEST\frmPlant.cs:line 169 
    at System.Windows.Forms.Control.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
    at System.Windows.Forms.Button.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 
    at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) 
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
    at System.Windows.Forms.Application.Run(Form mainForm) 
    at RVEST.Program.Main() in C:\D_Drive_Stuff\RVESTV2\RVEST\Program.cs:line 26 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 
Thank you 

+2

なぜドキュメントをそこに保存しますか?おそらくUACが干渉しているだけです。賢明な場所に保存してみてください... – ChristopheD

+0

Vistaや7でこれを実行している場合は、ハードドライブのルートに保存するためにアプリを昇格させる必要があります。それは意味がある、あなたが知っている、あなたがそこにものを保存してはならないので。 – Tim

+0

保存できる場所は他にありますか?私は保存する必要はありません。ファイルを開くだけで、ユーザーが保存できるようになります。 – user575219

答えて

2

エラーメッセージが明らかと思われるが、アプリケーションはC:\で書くと、おそらくないApplication.StartupPathのいずれかでする権限がありません。

//string filename = Application.StartupPath + "\\" + sFileName; 
//string SaveLocation = "C:" + "\\" + sFileName; 
string SaveLocation = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), sFileName); 

適用できるかもしれないいくつかの他のSpecialFolder sがあります。

+0

を使用しても問題は解決しません。私はどんなフォルダにも保存する必要はありません。ファイルを開くだけでさらに良くなり、ユーザーに保存させることができます – user575219

関連する問題