Como resolvo um nome de arquivo canônico no Windows?

Se eu tiver uma string que resolve um caminho de arquivo no Windows, existe uma maneira aceita de obter uma forma canônica do nome do arquivo?

Por exemplo, eu gostaria de saber se

C:\stuff\things\etc\misc\whatever.txt

e

C:\stuff\things\etc\misc\other\..\whatever.txt

Na verdade, aponte para o mesmo arquivo ou não e armazene a forma canônica do caminho em meu aplicativo.

Note que simples comparações de strings não funcionarão, nem qualquer magia RegEx. Lembre-se que temos coisas comoPontos de nova análise NTFS para lidar com desde o Windows 2000 e a nova estrutura de bibliotecas no Windows 7.

questionAnswers(8)

yourAnswerToTheQuestion