Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将当前可执行文件复制到另一路径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 - Fatal编程技术网

将当前可执行文件复制到另一路径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++(仅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

我在使用CopyFile函数时出错,它要求filename和newLocation使用LPCWSTR类型,但如果我将这些变量声明为LPCWSTR,则GetModuleFileNameA函数将不再工作。

您的项目似乎默认设置为使用W版本的API函数。 您可以通过调用一个Ansi版本的GetModuleFileName来覆盖它。不要这样做,也可以这样做,但是您还需要调用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()
{
  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使用宏,以便进行适当的微缩,但我不记得它们: