web-dev-qa-db-ja.com

WindowsでDLLファイルの名前を変更できません

PicoScope SDK をダウンロードし、DLLの名前を変更しようとしています( プログラマーズガイドp.5 による)。ただし、Windows10ではこれを実行できません。

ファイル名をps3000a.dllからPS3000a.dllに変更しようとしています。

ファイルはFAT32USBドライブにあります。

これが機能しない理由はありますか?

GIF of the problem


コマンドラインからも機能しないようです。 Git Bash:

MINGW64 /f/SDK/lib
$ ls | grep 3000a.dll
ps3000a.dll*

MINGW64 /f/SDK/lib
$ mv ps3000a.dll PS3000a.dll

MINGW64 /f/SDK/lib
$ ls | grep 3000a.dll
ps3000a.dll*

パワーシェル:

PS F:\SDK\lib> dir | findstr 3000a.dll
-a----        7/11/2017   3:05 PM        2803016 ps3000a.dll
PS F:\SDK\lib> mv ps3000a.dll PS3000a.dll
PS F:\SDK\lib> dir | findstr 3000a.dll
-a----        7/11/2017   3:05 PM        2803016 ps3000a.dll
1
pensono

FAT32大文字と小文字を区別しないファイルシステム です。そのため、大文字と小文字のみが異なる同じ名前の2つのファイルは許可されていません。たとえば、PS3000a.dllps3000a.dllという名前の2つのファイルを同じフォルダに含めることはできません。

したがって、ファイル名をPS3000a.dllからps3000a.dllに変更しようとしても、Windows 10はファイル名を実際に変更していないことを認識しているため失敗しているようです。ただし、最初にファイルの名前を別の名前に変更し、次にもう一度名前を変更して、意図したケースを使用すると、機能します。

不思議なことに、これはWindows7には当てはまりません。これがProcessMonitorでのファイル名変更操作です。操作は、Windows10と7ですべての点で同じです。 ReplaceIfExistsフラグはFalseであり、結果は両方でSUCCESSです。

enter image description here

ただし、完全なトレースを比較すると、Windows7ボックスのみがSetRenameInformationFile操作とWriteFile操作の後に続きます。

Windows 7enter image description here

Windows 10enter image description here

Windows 10は、更新された情報をファイルシステムに書き込まないだけです。

新しい名前が古い名前と大文字だけで異なる場合、Windowsエクスプローラーは元の大文字を表示します。 Explorerインスタンスを終了して再起動すると、フォルダーに戻り、新しい大文字の使用が表示されます。

0
headkase