1

ファイルの名前を変更し、大文字と小文字のみを変更するための純粋なWin32ソリューションを知っている人はいますか。これには、別の名前や特別な権限(バックアップ、復元など)への中間の名前変更は含まれません。

Win32 サブシステムは通常、大文字と小文字だけが異なる 2 つのファイル名を同じものと見なすため、この問題の解決策を見つけることができませんでした。

4

4 に答える 4

5

MoveFileAPIで作成したテスト プログラムが動作するようです。renamecmd.exeのコマンドも同様です。何を試しましたか、どのようなエラーが発生していますか?

これは関係ありませんが、さらにテストすると、この方法で長いファイル名の名前を変更すると機能しますが、短いファイル名が変更されることが示されています (たとえば、~1とを交互に使用)。~2

于 2011-04-28T13:39:47.427 に答える
2

通常のMoveFile API を使用するだけです。その呼び出しはおそらくZwSetInformationFile (..., FileRenameInformation,...) に変わるだけです。

于 2011-04-28T13:54:07.377 に答える
0

Win32サブシステムへのスペルのみが異なる同じ名前の2つのファイルを公開する方法はないと思います。これらのファイルをどのように作成できたとしても、最も可能性の高い結果は、アクセスできるファイルが1つだけになることです。つまり、Win32でsoleyを維持するという目的は無効になります。

ネイティブレイヤーに移動する場合は、OBJ_CASE_INSENSITIVEを使用せずにNtCreateFileおよびInitializeObjectAttributesを使用してファイルを作成するか、末尾に余分なスペースを埋めることができます(余分なスペースを埋めると、Win32dosパスからファイルにアクセスできなくなります)。ここを参照してください:http ://www.osronline.com/ddkx/kmarch/k109_66uq.htm 。あなたはすでに知っていると確信していますが、あなたが知らなかった場合に備えてそれを含めました。

于 2011-04-28T23:13:12.133 に答える
0

ファイルが別のプログラムですぐに必要とされない限り、私のソリューションを使用できます。

ファイルの名前を変更するときは、大文字にして最後の文字を削除します。その後、もう一度名前を変更して、手紙を返します。

:)

于 2011-09-02T15:57:25.217 に答える