我正在尝试使用C语言检索文件的完整路径,但_fullpath
函数始终返回一条路径,例如C:\Windows\system32\test.txt
而不是C:\Users\me\Documents and settings\test.txt
这是我到目前为止编写的代码:
char lszValue[255];
DWORD dwType=REG_SZ;
DWORD dwSize=255;
HANDLE hFind;
WIN32_FIND_DATA FindFileData;
char full[255];
if ((RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\MY\\TestReg", &hKey)) == ERROR_SUCCESS)
{
if ((RegQueryValueEx(hKey, TEXT("path"), NULL, &dwType,(LPBYTE)&lszValue, &dwSize)) == ERROR_SUCCESS)
{
if ((hFind = FindFirstFile(strcat(lszValue, "/*"), &FindFileData)) == INVALID_HANDLE_VALUE)
WriteInLogFile("ERROR: FindFirstFile");
do
{
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (!_fullpath(full, FindFileData.cFileName, 255))
WriteInLogFile("ERROR: _fullpath\r\n");
WriteInLogFile(full);
}
} while (FindNextFile(hFind, &FindFileData) != 0);
}
}
有人对这个问题有任何疑问吗?
谢谢!
答案 0 :(得分:1)
您必须先将CWD设置为文件所在的文件夹。因为那是用于构造文件完整路径的文件夹。
这意味着,你必须在_fullpath之前调用_chdir。
答案 1 :(得分:0)
完整路径将相对路径(相对于当前目录)转换为完整路径。如果要将当前目录转换为完整路径,则需要将当前目录设置为用于枚举文件的目录。