【发布时间】:2014-04-01 06:15:17
【问题描述】:
我需要从 c 程序执行以下命令:
clamscan.exe -r C:\testing -d"C:\Documents and Settings\All Users\.clamwin\db" -lC:\testing\results.txt
我正在尝试按如下方式使用 CreateProcess 函数:
res = CreateProcess(NULL, "cmd.exe /c C:\\Program Files\\ClamWin\\bin\\clamscan.exe -r C:\\testing -d \"C:\Documents and Settings\All Users\.clamwin\db\" -lC:\\testing\\results.txt" , NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
具有以下错误处理:
if(res!=0) {
// Wait till cmd do its job
WaitForSingleObject( pi.hProcess, INFINITE );
// Check whether our command succeeded?
GetExitCodeProcess( pi.hProcess, &dwErr );
// Avoid memory leak by closing process handle
CloseHandle( pi.hProcess );
} else {
printf("not done");
dwErr = GetLastError();
}
当我运行程序时,我在消息框中两次收到以下错误:
cmd.exe - Application Error
The application failed to initialize properly (0x0000005). Click on OK to terminate the application.
谁能帮我理解问题出在哪里?我什至尝试将“cmd.exe”作为 lpCommandLine 传递,但我仍然得到同样的错误。
【问题讨论】:
-
删除 cmd.exe 并直接启动“C:\\Program Files\\ClamWin\\bin\\clamscan.exe”
-
试过了,我得到了同样的错误。
-
我认为你还需要转义
C:\Documents and Settings\All Users\.clamwin\db中的反斜杠,所以C:\\Documents and Settings\\All Users\\.clamwin\\db。 -
试过了还是不行。
-
我们无法判断您做了什么,因为您没有编辑您的问题。你的字符串有点乱,有些反斜杠正确转义,有些则没有。请发布您的实际代码,而不是仅仅说“试过了,没用。”