Даже если метод .NET DirectoryInfo.MoveTo
выдает исключение, если имя совпадает, вы можете вызвать такую функцию Windows API MoveFile
, чтобы установить регистр имени каталога: 1005 *
bool success = MoveFile(dirInfo.FullName, dirInfo.FullName);
С этим внешним объявлением:
[DllImport("kernel32", SetLastError = true)]
private static extern bool MoveFile(string lpExistingFileName, string lpNewFileName);
У меня нормально работает, если имя отличается только регистром. Я не пробовал называть это так, когда имя уже точно соответствует указанному.
Это имеет то преимущество, что каталог никогда не исчезает под своим первоначальным именем.
Он имеет тот недостаток, что работает только в Windows.