В чем разница между открытием командной строки с ShellExecute () и вручную?

Я пытаюсь запустить программу Java через программу Windows, которую я создал как своего рода приложение «Launcher». Обычно для запуска этой Java-программы я либо запускаю пакетный файл, либо иду прямо в окно командной строки cmd (Windows Key + R, введите «cmd») и введите java -Xmx4096M -Dsun.java2d.noddraw=true [...], Дело в том, что Джава кажется, узнается в этом окне.

С другой стороны, когда я запускаю командную строку из своего приложения, 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 );
}

Почему это так?

2

Решение

Для будущих посетителей, у которых есть эта проблема, вот мое рабочее решение:

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 за ведение меня в правильном направлении.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]