我有一些在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 \”
答案 0 :(得分:2)
这适用于符号链接。这应该适用于任何需要路径的函数,MSDN文档在这里:msdn.microsoft.com/en-us/library/aa365680%28v=VS.85%29.aspx
我验证了MapFileAndCheckSum(),它运行正常。 Windows7,使用UNICODE编译生效。
#include "stdafx.h"
#include <windows.h>
#include <assert.h>
#include <imagehlp.h>
#pragma comment(lib, "imagehlp.lib")
int _tmain(int argc, _TCHAR* argv[])
{
DWORD hdrsum, chksum;
const wchar_t* path = L"c:\\documents and settings\\hpassant\\my documents\\test.exe";
DWORD retval = MapFileAndCheckSum(path, &hdrsum, &chksum);
assert(retval == 0);
return 0;
}
答案 1 :(得分:0)
这是你需要的吗? %USERPROFILE%\我的文档
答案 2 :(得分:0)
我不确定你在哪里使用这个(自从我使用Windows以来已经有一段时间了),但我记得能够使用%HOMEPATH%变量来获取当前用户的文档&amp;设置目录:\ Documents and Settings {username}。我认为这也适用于更新的Windows 7路径。