File.Move を使用して、ある UNC の場所から別の場所にファイルを移動しようとしています。これは、宛先の UNC パスがたまたまローカル マシンである場合に爆発します (エラー: パスへのアクセスが拒否されました)。例File.Move(@"\\someServer\path\file.txt", @"\\blah2\somewhere\file.txt")
。これは、どこかに \\someServer という名前のネットワーク共有があり、私のローカル マシン名が blah2 であることを前提としています。\\blah2 を C:\ に変更すると、すべて問題ありません。
6 に答える
タイプミスかもしれませんが@"\\blah2\somewhere\file.txt"
、2つのバックスラッシュがあるのではないでしょうか。
uncパスのサーバー名は2つのスラッシュで始まるべきではありませんか?
例:@ "\\ someServer \ path \ file.txt"
Windows ファイル共有の場合、書き込みアクセスには、(ACL 以外の) もう 1 つの場所 (共有アクセス許可) で指定するアクセス許可が必要です。C$ などの管理共有を使用している場合、書き込みアクセスは既に有効になっていますが、このために明示的に設定されている共有を使用している場合は、[共有アクセス許可] で [変更] オプションが有効になっていることを確認してください。
[コンピューターの管理] -> [イベント ビューアー] の [セキュリティ イベント ログ] を確認することで、多くの場合、アクセス許可エラーをトラブルシューティングできることに注意してください。エラーの原因に関する追加の詳細がある場合があります。[管理ツール] -> [ローカル セキュリティ ポリシー] -> [ローカル ポリシー] -> [監査ポリシー] でログオン失敗の監査を有効にすると、イベント ログに詳細が記録される場合もあります。
File.Move ターゲット パスは UNC パスを受け入れません
バグを再現できないようです。多分それは許可と関係がありますか?UNC アドレスを使用してローカル マシン上の任意の場所に移動できますか、それともすべて例外をスローしますか?
私は同じ問題を抱えていて、ファイルは別のプログラム (Windows エクスプローラー) によってロックされていました。私の場合、ロック解除ツールを使用してファイルのロックを解除しました。これは、UNCパスを使用してファイルにアクセスしたときに発生しました.File.Moveメソッドは、ローカルパスを介してファイルにアクセスすると正常に機能します。
UNC/ローカルパスを介してファイルの名前を手動で変更したときに、その動作が得られなかったのは私には奇妙なようです。