###前提・実現したいこと
ネットワークで共有化されたフォルダに対して、アクセス権限がフルコントロールのAdministratorsグループがあります。このグループに所属しているユーザー(ネットワークの管理者)が、共有フォルダ以下のファイルおよびフォルダをローカル側から一括で削除するアプリケーションを作成したいと考えています。
なお、この共有フォルダのアクセス権限にユーザー個人でフルコントロールは与えていません。
削除したいフォルダは読み取り専用になっておらず、手作業ではファイルへのアクセスも削除もできます。
###発生している問題・エラーメッセージ
削除したいフォルダにアクセスが拒否されました。
###ソースコード
C#
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"hogehoge");
IEnumerable<System.IO.DirectoryInfo> subFolders = di.GetDirectories();
foreach (var folder in subFolders) { if (Directory.Exists(@folder.FullName.ToString()) == true) { Directory.Delete(@folder.FullName.ToString(), true); } }
例外は何を吐きましたか? IOExceptionですか?
質問した際に起きていた例外はIOExceptionでした。
何度か起動のし直しをしていると、KeyNotFoundExceptionが起こることもありました。
ローカルのフォルダは消せますか?
ローカルのフォルダやファイルであれば問題なく削除できます。
現在もデバッグテストを進めておりまして、その中で新たに分かった情報です。
今まで、共有フォルダ内に単一のフォルダを対象にテストをしていましたが、複数のファイル及びフォルダを作成して、アプリケーションを走らせるといくつかは削除できていました。特定のファイルに取り掛かった際にIOExceptionが起こっているようです。
もう試されたかもしれませんが(「共有フォルダをつかんでいない環境を整えて」と書かれているところを疑ってしまって申し訳ないですが、懸念の完全払拭目的で)、共有フォルダのアクセス権をEveryoneに対して「すべて拒否」で、外部からのセッションを遮断させた場合はどうでしょうか?
Thumbs.db ファイルあたりをどこかのクライアントPCがつかんでいたりしませんかね...
可能ならですが、「その」共有フォルダを、一度共有解除してみての切り分けはいかがでしょうか?共有フォルダ内か否かは、実は関係が無かったり...

回答3件
あなたの回答
tips
プレビュー