CopyFile не работает со строками окружения, но работает только со стандартными каталогами, в которые помещаются файлы. В любом случае, чтобы пройти это?

Я хочу скопировать файл, используя CopyFile() функционировать прямо из WinAPI.

Код работает, но файл не копируется.

Вот код

CopyFile("%%temp%%\\test.txt", "D:\\Tutorials\\test.txt", FALSE);

Если я изменю %%temp%%\\test.txt к чему-то другому, как D:\Test\test.txt, это работает, но не работает для локального каталога профиля.

Есть идеи, как пройти через это?

-2

Решение

Для файловых API Win32 требуются пути. Реальные пути, а не строковые выражения, которые оценивают пути. Они не выполняют расширение переменных.

Если вы хотите, чтобы расширение переменной выполнялось на пути, пропустите его через ExpandEnvironmentStrings (и использовать один % до и после имени переменной, не удваивается) перед передачей CopyFile,

Конечно, если вы просто пытаетесь жестко закодировать доступ к временному каталогу, не находя такие строки, как %TEMP%\test.txt в файле конфигурации, вместо этого вы должны использовать политику ОС для временного каталога, доступного по GetTempPath, (Затем используйте PathCchCombine объединить имя каталога и имя файла)

6

Другие решения