2

「C:\foo\.\bar\..」のようなパスがある場合、Win32 API を使用してディレクトリ修飾子を削除し、「C:\foo」に単純化する簡単な方法はありますか?


更新: より複雑な問題のようです。この "C:\foo\.\bar\.." の単純な例では、PathCanonicalize() と GetFullPathName() の両方を使用して、結果として "C:\foo" を取得します。

ただし、パスしているパスにはシンボリック リンクがあります。では、「C:\NaNa\Boo\Bin\..」を渡し、「C:\NaNa」が「D:\Apple」へのリンクであるとしましょう。次に、「C:\NaNa\Boo\Bin\..」が「C:\NaNa\Boo」よりも返されます。

関数は文字列だけで機能すると思いますが、シンボリックリンクを使用すると違いがあるようです:-(


更新 #2: 渡された文字列に改行文字 (0x0d) が含まれているようで、これにより関数が正常に動作しなくなりました。

4

1 に答える 1

7

shlwapi's を見てみましょうPathCanonicalize()

于 2011-07-06T16:04:25.577 に答える