
ダウンロードしたピコスコープSDK、そして私はDLLの1つの名前を変更しようとしています(プログラマーズガイド p.5)。ただし、Windows 10 ではこれができません。
ファイル名を から に変更しようとしていps3000a.dll
ますPS3000a.dll
。
ファイルは FAT32 USB ドライブにあります。
これが機能しない理由は何かありますか?
コマンドラインでも動作しないようです。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 ですべての点で同一です。フラグはReplaceIfExists
False で、結果は両方とも SUCCESS です。
ただし、完全なトレースを比較すると、Windows 7 ボックスのみがSetRenameInformationFile
操作に従って操作を実行しますWriteFile
。
Windows 10 では、更新された情報がファイル システムに書き込まれません。
答え2
新しい名前が古い名前と大文字小文字のみ異なる場合、Windows エクスプローラーでは元の大文字小文字が表示されます。エクスプローラー インスタンスを終了して再起動し、フォルダーに戻ると、新しい大文字小文字が表示されます。