有的时候我们需要检测本机是否安装JRE ,以便可以确保JAVA程序的正确部署和运行。

可能有的人说最简单的方法就是在命令行下输入‘java -version’ ,

如果输出了正确的版本信息就说明已安装正确,不过我们需要更为自动化和智能化的处理。

思路是这样的,我们调用一个名为ShellExecute()的Win32 API函数,该函数会执行指定的程序,

如果正确执行了,则会返回一个大于32的整数

(详情见MSDN,http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx )。

否则,则会返回一个小于32的整数。

基于以上的理论,写了一个纯C的小函数,可以方便嵌套在程序里面。

#define GM_JAVA_VM L"java.exe"

BOOL isJreInstalled() {
    HINSTANCE hInst = ShellExecute(NULL, L"Open", GM_JAVA_VM, NULL, NULL,SW_HIDE);
    if( (int)hInst > 32 ) {
        return TRUE;
    }else {
        return FALSE;
    }
}

该函数如果返回FALSE说明JRE未能正确安装。