Windows で DLL ファイルの名前を変更できない

Windows で DLL ファイルの名前を変更できない

ダウンロードしたピコスコープSDK、そして私はDLLの1つの名前を変更しようとしています(プログラマーズガイド p.5)。ただし、Windows 10 ではこれができません。

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

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

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

問題のGIF


コマンドラインでも動作しないようです。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

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

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

不思議なことに、これは Windows 7 では当てはまりません。以下は、プロセス モニターでのファイル名変更操作です。操作は Windows 10 と 7 ですべての点で同一です。フラグはReplaceIfExistsFalse で、結果は両方とも SUCCESS です。

ここに画像の説明を入力してください

ただし、完全なトレースを比較すると、Windows 7 ボックスのみがSetRenameInformationFile操作に従って操作を実行しますWriteFile

ウィンドウズ7 ここに画像の説明を入力してください

ウィンドウズ10 ここに画像の説明を入力してください

Windows 10 では、更新された情報がファイル システムに書き込まれません。

答え2

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

関連情報