2011-01-25 14 views
0

メールボックスからダウンロードしたファイルを保存しようとしています。このhasntは何の問題もあったが、今は私のi'v MODELL時にGUIを構築していることを私が取得し、認証例外:私は、問題はここにあるかを把握カントC#IO例外

Saved file: C:\TempNorlander 
System.UnauthorizedAccessException: Access to the path 'C:\TempNorlander' is denied. 
    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) 
    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 a.a0.b(String A_0, Byte[] A_1, Int32 A_2, Int32 A_3) 
    at MailBee.Mime.Attachment.Save(String filename, Boolean overwrite) 
    at Mail2DB.Connect2Exchange.CollectData() in C:\Users\marthin\documents\visual studio 2010\Projects\Mail2DB\Mail2DB\Connect2Exchange.cs:line 210 

。フォルダivの設定では、すべての可能なユーザがすべての権限を持っています。

EDIT:

私は今、GUIで私はシンプルなテキストボックスにフォルダパスを入力することを言及するのを忘れてしまいました。

SECOND EDIT(FolderBrowserDialog経由):

イムRunnigこの任意の助けのためのWindows 7とVS 2010 Thxを上! /マーティン

+0

どのようなGUIですか? – BrokenGlass

+0

そのWindowsアプリケーションでは、ユーザーがExchange Serverへの接続情報を記入し、いくつかのcsvファイルを含むメールがダウンロードされ、DBに解析されます。 – Marthin

答えて

1

保存したファイル:C:\ TempNorlander

あなたはフォルダと同じ名前を持つファイルを保存しようとしています。それは許可されていませんが、UnauthorizedAccessExceptionが結果です。ファイル名をC:\ TempNorlander \ mumble.txtに修正してください。

+0

あなたの正しい、何らかの理由で私のパスが正しくありませんでした。すべてのパスと節約を処理するために3:dpart libを使用しました。私が推測するより良いmanuellを読む必要があります。ヘルプのためのThx! – Marthin

1

誤差は非常に明確である:パス 'C:\ TempNorlander' へ

アクセスが拒否されました。

このプロセスを実行しているユーザーには、このフォルダにアクセスするための適切なアクセス許可がありません。

このユーザーに適切な権限を付与するか、既に権限を持っているユーザーを使用してプログラムを起動してください。

1

これはウェブプロジェクトであると仮定します。デフォルトでは、プロジェクトはIIS DefaultAppPoolの下で実行され、HDの任意のファイルを読み取る権限はありません。あなたは、特に異なる ユーザーの資格情報の下でファイル を読み取るために使用impersonation

  • エクスプローラ
  • で 権利を追加することにより、フォルダ/ファイルへのAppPool のアクセスを許可

    1. によってこの問題を解決することができ
    2. 別のアプリケーションプール または既存のアプリケーションプールchanging the identityを作成して、IISの アプリケーションに異なるIDを使用します。

    GUIがWebプロジェクトポイント2でない場合は、フォルダ/ファイルの読み取り権を持つユーザーを偽装するか、アプリケーションが実行されているユーザーにこれらの権限を追加する必要があります。

    +0

    これはWindowsアプリケーションです。 – Marthin

    0

    考えられる原因:あなたは本当にCにファイルを作成することはできません

    1. :(これは、ところで、あなたはいけない)あなたが既にいずれかの他のプロセスで開いているファイルを持っている
    2. かあなたのアプリ
    3. に既存のファイルを上書きしようとしていると

    はたぶん、あなたはあなたが本当に達成しようとしているタスクに対処したいことはできません。 たとえば、同じセッションでアクセスできる一時ファイルに一部のデータを保存します。または、後の呼び出しでアクセスできるASP.NETアプリケーションの永続データファイルに追加します。

    たとえば、これがデスクトップアプリケーションで、データを保存するための一時ファイルを作成する必要がある場合は、Path.GetTempFileNameを使用します。