DOBON.NET DOBON.NETプログラミング掲示板過去ログ

サーバー上のファイルの削除

環境/言語:[Windows Vista/7 C# VC2010]
分類:[.NET]

お世話になります。

サーバ上のファイルをクライアント側から削除(又は、名前の変更)をしようとすると「パスへのアクセスは拒否されました」と言われます。

サーバ上の共有を許可し(EveryOneに)アクセス許可は、フルコントロールにチェックを入れています。その中にあるファイルに対してクライアントからの処理で、ファイルの名前を変更(バックアップファイル)にして一部新しい内容を読みバックアップ前のファイルで作成しようとしています。

コードは下記です。
// 下記方法では、セキュリティ許可の関係で削除できない???
System.IO.FileInfo fi = new System.IO.FileInfo(fileMei);
string backupFile = Form1._formInstatns.ServerPath + @"\DATAFLC.BAK";
System.IO.FileInfo bk = new System.IO.FileInfo(backupFile);

if (fi.Exists == true)
{
//ファイルのサイズを取得
if (fi.Length > 2000000)
{
// バックアップがあれば消す
if (bk.Exists)
bk.Delete();

// ファイルを保存ファイルに変更
if (fi.Exists)
{
fi.CopyTo(backupFile);
fi.Delete();
//fi.MoveTo(backupFile); // パスへのアクセスは拒否されました

// 最新のデータを残す処理
DatafileReadAndWrite(backupFile, fileMei);
}
}
}
MoveTo()で失敗するので、CopyTo() Delete() で試したけど同じです。
コードでなくサーバのセキュリティ許可だと思いましたが、上記のようにフルコントロールを与える以外のの方法などあるのでしょうか?

教えてください
■No28478に返信(ssさんの記事)

backupFileの中身はどうなっていますか?
ファイル名として正しくないとそんなエラーがでた気もします。
■No28485に返信(shuさんの記事)
> ■No28478に返信(ssさんの記事)
>
> backupFileの中身はどうなっていますか?
> ファイル名として正しくないとそんなエラーがでた気もします。


\\MyServer\Pathlogy\Pathlogy\DATAFLC.BAK
上記のように入っています。デバッグでみると¥の代わりに/(逆向きの/)
が、¥1つにつき2つずつあります。
////MyServer//Pathlogy//Pathlogy//DATAFLC.BAK
(/は逆向きになっています)

以上のようになっていました。
■No28478に返信(ssさんの記事)
> サーバ上の共有を許可し(EveryOneに)アクセス許可は、フルコントロールにチェックを入れています。
> その中にあるファイルに対してクライアントからの処理で、ファイルの名前を変更(バックアップファイル)にして
> 一部新しい内容を読みバックアップ前のファイルで作成しようとしています。

あれ、共有タブだけですか?
セキュリティタブでアクセスしようとしているユーザーアカウントに書き込み権などを与えていますか?

NTFS ではファイルシステム自体にアクセス権の設定があります。
そのフォルダーを共有する場合は、共有フォルダーとしてのアクセス権(共有タブで設定)と、ファイルシステム自体のアクセス権(セキュリティタブで設定)の両方で許可が必要になります。
> ファイルシステム自体のアクセス権(セキュリティタブで設定)の両方で許可が必要になります
セットして試しました。がうまくいかなかったので関係すると思われるところのアクセス権を見ていてフォルダの一つにアクセス権がなかったので、与えてやるとみごと削除できました。

こんな感じ
「\\Server\AAAA\BBBB\CCCC\消すファイル名」のとき、AAAAのみアクセス権なしで共有してあり、BBBBは共有なし、CCCCはアクセス権を与え共有にしてました。
で、今まで、CCCCのみについてアクセス権していて、その上位にあるAAAAに与えていないためうまくいかなかったようです。

上位にある、AAAAを共有にしていなければ問題なしだったかもしれません。
各階層で別に共有を作成するときは、注意が必要なようですね。

今まで、そのファイルがあるフォルダーのみのアクセス権だけ注意していればいいと思ってました。どうやら共有にももう少し注意が必要ですね。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板