带有参数的CreateProcess Running jar



我正在尝试用其他参数启动一个jar文件。jar的启动工作正常,但它抱怨参数为空。参数-d需要一个目录。

我有这个:

CString sParameters;
sParameters.Format("C:\Java\bin\java.exe -jar "D:\test\myprog.jar" -d "D:\testdir"");
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
HANDLE h = CreateFileA(_T("error.log"),
GENERIC_WRITE,
FILE_SHARE_WRITE | FILE_SHARE_READ,
&sa,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
PROCESS_INFORMATION pi;
STARTUPINFO si;
BOOL ret2 = FALSE;
DWORD flags = CREATE_DEFAULT_ERROR_MODE;
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.wShowWindow = SW_NORMAL;
si.dwFlags |= STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdInput = NULL;
si.hStdError = h;
si.hStdOutput = h;

if (CreateProcessA(NULL, sParameters.GetBuffer(), NULL, NULL, TRUE, flags, NULL, NULL, &si, &pi) == false)
{
}

CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
CloseHandle(h);

输出日志中有以下输出:

非法选项:"-d d:\testdir","d"需要值

那么,必须如何构建参数字符串呢?

好了,现在它可以正常工作了。paramstring看起来和以前一样:

"C:\Java\bin\Java.exe-jar\"D:\test\myprog.jar\"-D\"D:\testdir\">

最新更新