将当前可执行文件复制到另一个路径 C++(仅限 Windows)
Copy current executable to another path C++ (Windows only)
我忘记了如何用 C++ 编程,我希望我的可执行文件将自身复制到另一个路径。我找到了一个可以执行我想执行的操作的代码,但是存在我不知道如何解决的转换错误:
void Victim::replicate()
{
char filename[ MAX_PATH ];
char newLocation[]="C:\Users\myUsername\Desktop\";
BOOL stats=0;
DWORD size = GetModuleFileNameA( NULL, filename, MAX_PATH );
CopyFile(filename, newLocation, stats);
}
我在使用 CopyFile 函数时出错,它期望 filename 和 newLocation[= 的 LPCWSTR 类型21=] 但是如果我将这些变量声明为 LPCWSTR,GetModuleFileNameA 函数将不再起作用。
您的项目似乎默认设置为使用 API 函数的 W
版本。
您可以通过调用 GetModuleFileName
的 A
(Ansi) 版本来覆盖它。不要 - 或者做,但是你还需要调用 CopyFileA
.
强制使用 Ansi 版本:
void Victim::replicate()
{
char filename[ MAX_PATH ];
char newLocation[] = "C:\Users\myUsername\Desktop\";
BOOL stats=0;
DWORD size = GetModuleFileNameA( NULL, filename, MAX_PATH );
CopyFileA(filename, newLocation, stats);
}
强制使用宽版本:
void Victim::replicate()
{
wchar_t filename[ MAX_PATH ];
wchar_t newLocation[] = L"C:\Users\myUsername\Desktop\";
BOOL stats=0;
DWORD size = GetModuleFileNameW( NULL, filename, MAX_PATH );
CopyFileW(filename, newLocation, stats);
}
使用项目默认值:
void Victim::replicate()
{
TCHAR filename[ MAX_PATH ];
TCHAR newLocation[] = _T("C:\Users\myUsername\Desktop\");
BOOL stats=0;
DWORD size = GetModuleFileName( NULL, filename, MAX_PATH );
CopyFile(filename, newLocation, stats);
}
我忘记了如何用 C++ 编程,我希望我的可执行文件将自身复制到另一个路径。我找到了一个可以执行我想执行的操作的代码,但是存在我不知道如何解决的转换错误:
void Victim::replicate()
{
char filename[ MAX_PATH ];
char newLocation[]="C:\Users\myUsername\Desktop\";
BOOL stats=0;
DWORD size = GetModuleFileNameA( NULL, filename, MAX_PATH );
CopyFile(filename, newLocation, stats);
}
我在使用 CopyFile 函数时出错,它期望 filename 和 newLocation[= 的 LPCWSTR 类型21=] 但是如果我将这些变量声明为 LPCWSTR,GetModuleFileNameA 函数将不再起作用。
您的项目似乎默认设置为使用 API 函数的 W
版本。
您可以通过调用 GetModuleFileName
的 A
(Ansi) 版本来覆盖它。不要 - 或者做,但是你还需要调用 CopyFileA
.
强制使用 Ansi 版本:
void Victim::replicate()
{
char filename[ MAX_PATH ];
char newLocation[] = "C:\Users\myUsername\Desktop\";
BOOL stats=0;
DWORD size = GetModuleFileNameA( NULL, filename, MAX_PATH );
CopyFileA(filename, newLocation, stats);
}
强制使用宽版本:
void Victim::replicate()
{
wchar_t filename[ MAX_PATH ];
wchar_t newLocation[] = L"C:\Users\myUsername\Desktop\";
BOOL stats=0;
DWORD size = GetModuleFileNameW( NULL, filename, MAX_PATH );
CopyFileW(filename, newLocation, stats);
}
使用项目默认值:
void Victim::replicate()
{
TCHAR filename[ MAX_PATH ];
TCHAR newLocation[] = _T("C:\Users\myUsername\Desktop\");
BOOL stats=0;
DWORD size = GetModuleFileName( NULL, filename, MAX_PATH );
CopyFile(filename, newLocation, stats);
}