Не копируется файл с помощью функции CopyFile

Хочу чтобы мой .exe файл копировал сам себя в определенное место. Я использую функцию CopyFile, но она почему-то не работает. Я думал что проблема в том что .exe файл не может копировать себя-же. Но я пробовал с обычными .txt файлами и ничего не получается. Все пути полученные в ходе программы я проверял, они действительные.

#define _CRT_SECURE_NO_WARNINGS
#define DEBUG
#include<iostream>
#include<string>
#include<filesystem>
#include<fstream>
#include<Windows.h>
#include<MMSystem.h>
#include<stdio.h>
#include<direct.h>
#include<conio.h>

void main()
{
    char ThatExe[MAX_PATH] = "";
    wchar_t buffer[MAX_PATH];

    GetModuleFileName(NULL, buffer, MAX_PATH);
    strcat(ThatExe, "C:\\1\\hi.exe");

    int a = CopyFile((LPWSTR)buffer, (LPWSTR)ThatExe, true);

    if (a) std::cout << "file copy"     << std::endl;
    else   std::cout << "file not copy" << std::endl;
}

Ответы (1 шт):

Автор решения: maint
wchar_t ThatExe[MAX_PATH];

wchar_t buffer[MAX_PATH];

GetModuleFileName(NULL, buffer, MAX_PATH);

wcscpy(ThatExe, L"C:\\\\1\\\\hi.exe");

int a = CopyFile((LPWSTR)buffer, (LPWSTR)ThatExe, true);

if (a) std::cout << "file copy"     << std::endl;

else   {
 std::cout << "file not copy" << GetLastError() << std::endl;
}
→ Ссылка