C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■95933 / )  Re[5]: フォルダの名前を変更したい
□投稿者/ 魔界の仮面弁士 (2867回)-(2020/10/09(Fri) 18:52:42)
No95932 (グルメン さん) に返信
> エクスプローラを何とかしたいというわけではなく、

何れかのプロセスによって、カレントディレクトリとして割り当てられていると、
そのディレクトリの名前を変更することはできません。

また、エクスプローラーと C# の立場が逆であったとしても同じことです。


たとえば、C# のアプリから、
  System.IO.Directory.SetCurrentDirectory(@"D:\Example\");
  System.IO.Directory.Move(@"D:\Example\", @"D:\Example2\");
という操作をした場合、Move メソッドは IOException となるでしょう。


上記で D:\Example\ をカレントディレクトリとしている最中は、
エクスプローラーからであっても、リネーム操作ができなくなります。


しかし、カレントディレクトリを別の場所にしてやれば、
そのディレクトリの名前を変更できるようになります。
 System.IO.Directory.SetCurrentDirectory(@"D:\");
 System.IO.Directory.Move(@"D:\Example\", @"D:\Example2\");


上記は、.NET の Directory.SetCurrentDirectory を例に挙げましたが、
コマンドプロンプトから
 CD /D D:\Example
としていた場合も同様にロックされます。


カレントディレクトリは、それぞれのアプリごとに存在していますので、
解放したいなら、そのディレクトリを掴んでいる該当アプリを操作して
カレントディレクトリを変更させるか、あるいはそのプロセスを
終了させる必要があると思います。
返信 編集キー/


管理者用

- Child Tree -