0

我已经尝试使用 Stackoverflow 中的一些解决方案,但我无法让它工作,我想从 C++ 启动一个 .LOG(.txt 文件),但包含它的路径文件夹可能有空格,所以当我尝试要启动它,我收到一条错误消息,说它找不到文件,因为 pah(包含空格)是错误的,这是我的代码的样子:

void Log (unsigned int Code,...)
{
char currdate[11] = {0};
SYSTEMTIME t;
GetLocalTime(&t);
sprintf(currdate, "%02d:%02d:%02d", t.wHour, t.wMinute, t.wSecond);

PROCESSENTRY32 pe32;
FILE* FileHwnd1;

FileHwnd1 = fopen("TEST.log","a+");
fprintf(FileHwnd1,"[%s] Code: %X\n",currdate,Code);
fclose(FileHwnd1);
char buffer[MAX_PATH];
GetModuleFileName( NULL, buffer, MAX_PATH);
char Path[50];

wsprintf(Path,"start %s\\AntiHack.log",buffer);
system(Path);//Here is where i get the containing spaces path error
}

谢谢。

4

2 回答 2

2

我建议您完全避免系统调用并自己启动进程。

  1. 使用AssocQueryString () 查找扩展的关联进程(在本例中为 .log)
  2. 设置并启动CreateProcess () 调用以调用,传递适当的命令行。

还有其他方法可以做到这一点,但正如您现在注意到的那样,绕道而行总会有陷阱。以上是 Explorer.exe 如何为扩展启动相关进程的现场。

于 2012-09-19T04:18:41.030 回答
0

你可以试试:

wsprintf(Path,"start \"\" \"%s\"\\\AntiHack.log",buffer);
于 2012-09-19T03:48:51.637 回答