Блиц вопрос. Ни как не могу понять в чем ошибка: CopyFileW(L"\\\\?\\C:\..", L"C:\\data.txt", FALSE); Ошибка в том, что в первом аргументе я задаю путь овер MAX_PATH и он не робит. А если меньше, то робит. Хотя префикс в двух случаях поставлен "\\\\?\\" 123 ошибка выводит. В чем трабл может быть?
Ну 123 ошибка - это ERROR_INVALID_NAME, многие функции в венде предполагают, что пути не превышают MAX_PATH, может с этим связано. Зачем тебе "\\\\?\\"? Можно попробовать GetShortPathName, может он влезет в MAX_PATH, это тупо канеш, но мало ли.
не, как раз так и мне нужно использовать длинный путь. И использовал самый минимальный, а так длина превышает вообще 5-6 раза больше MAX_PATH https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-copyfile на msdn написано, что "\\\\?\\" надо именно тип для овер MAX_PATH. Есть ли еще другие способы/методы? --- Сообщение объединено, 26 ноя 2020 --- p.s. а вообще мне надо прочитать файл, которым другая прога не хочет делится. Запрещен доступ к чтению. Вот и надо скопировать или можете предложить что-нибудь другое?
как раз так и фишка у меня в самых '.' и '..' Предполагаю, что C:\\Data\\..\\Data удаляет '..' и у меня остается С:\\Data\\\\Data
Path Traversal баг штоль эксплойтишь? --- Сообщение объединено, 26 ноя 2020 --- Может попробовать сделать GetFullPathName перед CopyFile?
ага. Но знаешь, там у меня вообще очень длинный. Просто на глаз не разберешь куда идти. А на счет авер хуков хз Rel, можем в ПМ списаться? У меня есть некая идея. Хотел поинтересоваться не публично --- Сообщение объединено, 26 ноя 2020 --- очень боюсь, что GetFullPathName может урезать главную фишечку. Хотя могу даже щас потестить
Протестил. GetFullPathName - урезает "." и ".." т.е. C:\\Data\\..\\Data - получится C:\\Data\\ --- Сообщение объединено, 26 ноя 2020 --- да лан те Рел) Не такой уж приват, прост потенциально-то приват) Сам понимаешь, такая инфа на вес золота
Непойму, приват в том, шо имя директории '..' будет обозначать переход на каталог вверх и удалять всё чо до слеша слева?
Rel, кстати лет 8 назад трещген кодил зиродей, который отправлял картинку через магент, и удалял все, что в каталоге выше.
Кстати, да, только то не картинка была по идее, а dll, например, которую mra мог впилить в любую директорию по заранее известному пути
проблема решена. Длина символа оказывается не была у меня больше 260 Все дело вот в чем: C:\\..\\C:\\Windows\\..\\Windows ->исправил на C:\\Windows\\..\\Windows т.е. в самом первом префиксе была ошибка "C:\\..\\C:\\" Но в проводнике все воркает. Рел, там крч даже создат папку овер 260 символов венда не позволит оказыватеся.