2016-08-09 13 views
-1

誰かが同様の問題を抱えているのだろうかと思います。File.CopyがUnauthorizedAccessExceptionをスローする

私は以下のように簡略化することができる私のアプリケーションに単純なファイルコピーコードを持っています(そして、VS2013を開いてコードをデバッグするための私のユーザはソースとターゲットの両方のフォルダ階層をフルコントロールできます何らかの理由で、私はこのコードは、私まで幸せに働いていた

// sourcefile was thought to be @"C:\tfs\Dev\Source\some-module\bin\Debug\mybinary.dll"; 
// retrieved through an environment variable, but was pointing to the folder instead of the file inside 
Directory.CreateDirectory(myfolder); 
File.Copy(sourcefile, Path.Combine(myfolder, Path.GetFileName(sourcefile)), true); 

)その後、私は手動でユーザーにフルコントロールを適用し、とにかくエラーがソースフォルダを訴え、動作しませんでした管理者モードでVSを実行してみました今日私のローカルマシンで試してみました(私のテストベッドマシンではまだ動作しています)。それは私が再起動し、それが再び新たが、失敗した試みたファイルロックの問題かもしれ考える

System.UnauthorizedAccessException: Access to the path 'C:\tfs\Dev\Source\some-module\bin\Debug' is denied. 
Result StackTrace: 
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost) 
    at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite) 

:しかし、いくつかの理由で、それは下のエラーを投げ始めました。

ソースのフォルダに読み取り専用の属性があり、これが問題(これは不思議です)だと思って、私はそれを解除しようとしましたが、できません。次に、フォルダをtfsワークスペースから別のフォルダ(c:\ users \ my-user ..)に移動しましたが、読み取り専用属性を削除できませんでした(動作しているようですが、ファイル)。私は狂って、すべての親フォルダに読み込み専用を設定しないようにしてみました。元の問題とは何ら関係してはいけません。

私も同様の質問と思考を再確認し、オプションが不足しています。

Win7、.net 4.5.2、VS2013はいくつかの設定です。

追加実験、私は現在のユーザーに完全なアクセス許可とセキュリティルールでsourcefileのディレクトリにDirectory.CreateDirectory使用してみました を更新し、何も変わりません。それはなぜ始まるべきsourcefileディレクトリに関して不平を言うでしょうか?

+5

これは、現在のユーザーにそのディレクトリに書き込む権限がないことを意味します。最初に、アプリケーションを実行しているユーザーアカウントのアクセス許可を設定します。 –

+1

提案:a)宛先にチェックファイルが存在しません。 b)1秒スリープして、AVがファイルをスキャンして一時的にブロックするアクセスを再試行します。 –

+0

Niranjan、私はユーザーに完全な制御について最初の段落に言及しました。ホルヘ、AVに関する良いアイデア、私はそれをチェックします! – MattAPiroglu

答えて

0

うーん。それは再び起こった。別の場所で間違い。

私が質問に載せた簡略化されたコードは、実際のものを示していませんでした。私はソースファイル名に環境変数を使用していましたが、ファイルではなくフォルダを指していました。

ここでの問題は、MicrosoftのUnauthorizedAccessは、ファイルの代わりに実際にディレクトリをコピーしようとしたことを理解するのに十分な直感的ではないと思われ、その結果としてテールを追い始めることです。とにかく、他の人を助けるかもしれないケースがあります。ディレクトリやコピーしているファイルであるかどうかを確認することを忘れないでください。

0

ファイルがブロックされている可能性はありますか?インターネットからダウンロードされた場合、Windowsはそれをブロックします。次に、ファイルのプロパティに移動する必要があります。下部には、ブロックを解除できるチェックボックスがあります。

Blocked file

+0

答えをありがとう、しかし私はすでに私が私の更新で間違っていた場所を指摘しました。非常に良い点、btw。 – MattAPiroglu

関連する問題