指定されたパラメーターのファイルとフォルダーを再帰的に削除する単純な (コンソール) スクリプトを C# で作成しました。例: delete_folder.exe "C:\test"
アンインストール中にこの小さなコードを使用して、アンインストール後に残りのファイルを削除します。コード自体は正常に動作しますが、次のエラーが表示されます。System.IO.IOException: The process cannot access the file 'C:\test\test2' because it is being used by another process.
このエラーの直前に、アンインストーラーが停止し、いくつかのサービス (インストーラーによって作成された) が削除されます。
Windows はまだフォルダーを使用しているようですtest2
。私の質問は次のとおりです。フォルダーが別のプロセスで使用されているかどうかを確認する方法と、そのプロセスがそこにあるのを停止して、残りのフォルダーを削除できるようにする方法です。
コンソール アプリケーションは次のようになります。
class Program
{
public static void log(string t)
{
File.AppendAllText("C:\\testlog.txt", DateTime.Now.ToString() + "----" + t + "\r\n");
}
static void Main(string[] args)
{
try
{
string path = args[0];
if (Directory.Exists(path) == true)
{
Directory.Delete(path, true);
}
else
{
Console.WriteLine("Dir not found!");
}
}
catch (Exception ex)
{
log(ex.ToString());
}
}
}