我正在尝试通过我作为一种“Launcher”应用程序创建的Windows程序运行java程序。通常,要运行此java程序,我将运行批处理文件或直接转到cmd提示符窗口(Windows Key + R,键入“cmd”)并输入java -Xmx4096M -Dsun.java2d.noddraw=true [...]
。关键是 java 似乎在此窗口中被识别。
另一方面,当我从我的应用程序启动命令提示符时,java不再“被识别为内部或外部命令,可操作程序或批处理文件。”
TCHAR szPath[MAX_PATH];
if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_SYSTEM, NULL, 0, szPath))) {
PathAppend(szPath, TEXT("cmd.exe"));
ShellExecuteW( GetSafeHwnd(),L"open", szPath, NULL, NULL, 1 );
}
答案 0 :(得分:3)
PVOID OldValue = NULL;
if( Wow64DisableWow64FsRedirection(&OldValue) ) {
TCHAR szPath[MAX_PATH];
if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_SYSTEM, NULL, 0, szPath))) {
PathAppend(szPath, TEXT("cmd.exe"));
ShellExecuteW( GetSafeHwnd(), L"open", szPath, NULL, NULL, 1 );
}
if ( FALSE == Wow64RevertWow64FsRedirection(OldValue) ) {
AfxMessageBox(L"A script that should never fail has failed.");
return;
}
}
感谢HansPassant带领我朝着正确的方向前进。