Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>To get the OS version (major, minor, build, service pack) you can use JNA <a href="http://today.java.net/article/2009/11/11/simplify-native-code-access-jna" rel="nofollow">Documentation Here</a> and any number of the windows libraries (version.dll, kernel32.dll, user32.dll, etc). I based my project on Daniel Doubrovkine's project <a href="http://oshi.codeplex.com/" rel="nofollow">Operating System and Hardware Information</a>. His project will also query the hardware, which I didn't need. The nice thing is it will also allow you to read/write to the registry.</p> <pre><code>import com.sun.jna.Native; import com.sun.jna.platform.win32.Advapi32Util; import com.sun.jna.platform.win32.Kernel32; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.Win32Exception; import com.sun.jna.platform.win32.WinNT; import com.sun.jna.platform.win32.WinNT.OSVERSIONINFOEX; import com.sun.jna.platform.win32.WinReg; import com.sun.jna.platform.win32.WinUser; /** * * @author geverding */ public class OSVersionInfo { private OSVERSIONINFOEX versionInfo; private static OSVersionInfo instance = new OSVersionInfo(); public static OSVersionInfo Istance() { return instance; } public OSVersionInfo() { versionInfo = new OSVERSIONINFOEX(); if (!Kernel32.INSTANCE.GetVersionEx(versionInfo)) { throw new Win32Exception(Kernel32.INSTANCE.GetLastError()); } } public int getMajor() { return versionInfo.dwMajorVersion.intValue(); } public int getMinor() { return versionInfo.dwMinorVersion.intValue(); } public int getBuild() { return versionInfo.dwBuildNumber.intValue(); } public String getServicePack() { return Native.toString(versionInfo.szCSDVersion); } @Override public String toString() { String version = null; if (versionInfo.dwPlatformId.intValue() == WinNT.VER_PLATFORM_WIN32_NT) { // 7 if (versionInfo.dwMajorVersion.intValue() == 6 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 1 &amp;&amp; versionInfo.wProductType == WinNT.VER_NT_WORKSTATION) { version = "7"; } // Server 2008 R2 else if (versionInfo.dwMajorVersion.intValue() == 6 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 1 &amp;&amp; versionInfo.wProductType != WinNT.VER_NT_WORKSTATION) { version = "Server 2008 R2"; } // Server 2008 else if (versionInfo.dwMajorVersion.intValue() == 6 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 0 &amp;&amp; versionInfo.wProductType != WinNT.VER_NT_WORKSTATION) { version = "Server 2008"; } // Vista else if (versionInfo.dwMajorVersion.intValue() == 6 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 0 &amp;&amp; versionInfo.wProductType == WinNT.VER_NT_WORKSTATION) { version = "Vista"; } // Server 2003 else if (versionInfo.dwMajorVersion.intValue() == 5 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 2 &amp;&amp; versionInfo.wProductType != WinNT.VER_NT_WORKSTATION &amp;&amp; User32.INSTANCE.GetSystemMetrics(WinUser.SM_SERVERR2) != 0) { version = "Server 2003"; } // Server 2003 R2 else if (versionInfo.dwMajorVersion.intValue() == 5 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 2 &amp;&amp; versionInfo.wProductType != WinNT.VER_NT_WORKSTATION &amp;&amp; User32.INSTANCE.GetSystemMetrics(WinUser.SM_SERVERR2) == 0) { version = "Server 2003 R2"; } // XP 64 bit else if (versionInfo.dwMajorVersion.intValue() == 5 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 2 &amp;&amp; versionInfo.wProductType == WinNT.VER_NT_WORKSTATION) { version = "XP"; } // XP 32 bit else if (versionInfo.dwMajorVersion.intValue() == 5 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 1) { version = "XP"; } // 2000 else if (versionInfo.dwMajorVersion.intValue() == 5 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 0) { version = "2000"; } // Windows NT else if (versionInfo.dwMajorVersion.intValue() == 4) { version = "NT 4"; if ("Service Pack 6".equals(Native.toString(versionInfo.szCSDVersion))) { if (Advapi32Util.registryKeyExists(WinReg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion\\Hotfix\\Q246009")) { return "NT4 SP6a"; } } } else { throw new RuntimeException("Unsupported Windows NT version: " + versionInfo.toString()); } if (versionInfo.wServicePackMajor.intValue() &gt; 0) { version = version + " SP" + versionInfo.wServicePackMajor.intValue(); } } else if (versionInfo.dwPlatformId.intValue() == WinNT.VER_PLATFORM_WIN32_WINDOWS) { if (versionInfo.dwMajorVersion.intValue() == 4 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 90) { version = "ME"; } else if (versionInfo.dwMajorVersion.intValue() == 4 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 10) { if (versionInfo.szCSDVersion[1] == 'A') { version = "98 SE"; } else { version = "98"; } } else if (versionInfo.dwMajorVersion.intValue() == 4 &amp;&amp; versionInfo.dwMinorVersion.intValue() == 0) { if (versionInfo.szCSDVersion[1] == 'C' || versionInfo.szCSDVersion[1] == 'B') { version = "95 OSR2"; } else { version = "95"; } } else { throw new RuntimeException("Unsupported Windows 9x version: " + versionInfo.toString()); } } else { throw new RuntimeException("Unsupported Windows platform: " + versionInfo.toString()); } return version; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload