2

我正在尝试通过我创建为一种“启动器”应用程序的 Windows 程序运行 Java 程序。通常要运行这个 java 程序,我要么运行一个批处理文件,要么直接进入 cmd 提示窗口(Windows 键 + 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 );
}

为什么会这样?

4

1 回答 1

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引导我朝着正确的方向前进。

于 2013-03-02T00:26:28.447 回答