C _fullpath () возвращает неверный путь - PullRequest
1 голос
/ 28 марта 2012

Я пытаюсь получить полный путь к файлу, используя язык Си, но функция _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);
    }
}

У кого-нибудь есть идеи по этому вопросу, пожалуйста?

Спасибо!

Ответы [ 2 ]

1 голос
/ 28 марта 2012

сначала необходимо установить CWD для папки, в которой находится файл. Потому что это папка, которая используется для создания полного пути к файлу.

Это означает, что вам нужно позвонить _chdir до _fullpath.

0 голосов
/ 28 марта 2012

Полный путь преобразует относительный путь (относительно текущего каталога) в полный путь.Вам необходимо установить текущий каталог в каталог, используемый для перечисления файлов, если вы хотите преобразовать их в полный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...