将当前可执行文件复制到另一路径C++(仅Windows) 我忘了如何用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类型,但如果我将这些变量声明为LPCWSTR,则GetModuleFileNameA函数将不再工作。您的项目似乎默认设置为使用W版本的API函数。 您可以通过调用一个Ansi版本的GetModuleFileName来覆盖它。不要这样做,也可以这样做,但是您还需要调用CopyFileA 强制使用Ansi版本:将当前可执行文件复制到另一路径C++(仅Windows) 我忘了如何用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); },c++,copy,getmodulefilename,C++,Copy,Getmodulefilename,我在使用CopyFile函数时出错,它要求filename和newLocation使用LPCWSTR类型,但如果我将这些变量声明为LPCWSTR,则GetModuleFileNameA函数将不再工作。您的项目似乎默认设置为使用W版本的API函数。 您可以通过调用一个Ansi版本的GetModuleFileName来覆盖它。不要这样做,也可以这样做,但是您还需要调用CopyFileA 强制使用Ansi版本: void Victim::replicate() { char filename[ M
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()
{
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);
}
谢谢,它现在可以工作了。我必须熟悉所有这些type@Flamecube667伟大的不客气!关于类型,我认为也应该对char和wchar\t使用宏,以便进行适当的微缩,但我不记得它们: