【发布时间】:2011-07-07 01:15:27
【问题描述】:
我有一些在 Windows XP 上创建的旧数据。它包含用户“我的文档”目录中文件的绝对文件名。在 Windows 7 上,这些绝对引用不再指向正确的位置。例如,“C:\Documents and Settings\Gareth\My Documents\readme.txt”现在应该是“C:\Users\Gareth\Documents\readme.txt”。
许多 Win32 函数很乐意使用“C:\Documents and Settings”下的文件名,并在后台将它们转换为新的文件名,但是我们使用的某些函数不这样做。是否有可用于将这些文件名转换为新位置的 Windows API?
显然,我可以进行字符串搜索和替换,但不能保证在所有情况下都能正常工作。因为有些 Windows 函数似乎可以进行替换,所以感觉应该有一个已发布的函数,我可以调用它来做同样的事情。
只是为了澄清我的问题:我正在寻找执行此操作的函数:
输入:“C:\Documents and Settings\Gareth\My Documents\readme.txt”
输出:“C:\Users\Gareth\Documents\readme.txt”
或
输入:“C:\Documents and Settings\Gareth\My Documents\”
输出:“C:\Users\Gareth\Documents\”
【问题讨论】:
-
这适用于符号链接。这应该适用于任何采用路径的功能。哪些没有? msdn.microsoft.com/en-us/library/aa365680%28v=VS.85%29.aspx
-
MapFileAndCheckSum() 是我们发现的问题。它显然是一个遗留函数,因为它的内部实现甚至不支持 unicode。
-
@Hans 你想用你所说的话发布答案吗?这可能是我对这个问题的最正确回答,所以我愿意接受。