回答
你总是可以使用Java来调用Windows命令'systeminfo',然后解析出结果,我似乎无法找到一种方法在Java中本地执行此操作。
JRE
一个将返回Windows 8
用于窗户8机:
import java.io.*;
public class GetWindowsEditionTest
{
public static void main(String[] args)
{
Runtime rt;
Process pr;
BufferedReader in;
String line = "";
String sysInfo = "";
String edition = "";
String fullOSName = "";
final String SEARCH_TERM = "OS Name:";
final String[] EDITIONS = { "Basic", "Home",
"Professional", "Enterprise" };
try
{
rt = Runtime.getRuntime();
pr = rt.exec("SYSTEMINFO");
in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
//add all the lines into a variable
while((line=in.readLine()) != null)
{
if(line.contains(SEARCH_TERM)) //found the OS you are using
{
//extract the full os name
fullOSName = line.substring(line.lastIndexOf(SEARCH_TERM)
+ SEARCH_TERM.length(), line.length()-1);
break;
}
}
//extract the edition of windows you are using
for(String s : EDITIONS)
{
if(fullOSName.trim().contains(s))
{
edition = s;
}
}
System.out.println("The edition of Windows you are using is "
+ edition);
}
catch(IOException ioe)
{
System.err.println(ioe.getMessage());
}
}
}
+1。试图涵盖OP所需的唯一答案。 – khachik 2011-05-24 19:20:06
Hunter,你是对的,不可能通过Java直接进行,谢谢你的回应。虽然我在你的帖子之前已经有了一个解决方案,但由于某些个人原因我没有分享。实际上,还有更好的方法: – San 2011-05-27 01:41:13
Process process = Runtime.getRuntime()。exec(“CMD/C SYSTEMINFO | FINDSTR/B/C:\”OS Name \“”); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line = bufferedReader.readLine(); if(line.indexOf(“Professional”)> 0) ... – San 2011-05-27 01:47:23
你可以得到很多关于你在问的JVM它运行的系统信息的系统属性:
import java.util.*;
public class SysProperties {
public static void main(String[] a) {
Properties sysProps = System.getProperties();
sysProps.list(System.out);
}
}
更多的信息在这里:http://www.herongyang.com/Java/System-JVM-and-OS-System-Properties.html
编辑:属性os.name
似乎是您最好的选择
我正在考虑这个问题,但它并没有返回OP所需的确切信息(窗口类型)。也许他可以执行一个Windows命令并从该'Process'中读取它。 – asgs 2011-05-24 11:40:56
SystemUtils类提供了几种确定此类信息的方法。
从System.getProperty("os.name")
结果不同的Java虚拟机(连Sun/Oracle的那些)之间变化。对于同一个系统,在运行与JDK
相同的程序时返回Windows NT (unknown)
。
System.getProperty("os.version")
对此似乎更可靠。对于Windows 7
,它返回6.1
和6.2
对于Windows 8
。
重构Hunter McMillen的answer更有效率和可扩展性。
import java.io.*;
public class WindowsUtils {
private static final String[] EDITIONS = {
"Basic", "Home", "Professional", "Enterprise"
};
public static void main(String[] args) {
System.out.printf("The edition of Windows you are using is: %s%n", getEdition());
}
public static String findSysInfo(String term) {
try {
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("CMD /C SYSTEMINFO | FINDSTR /B /C:\"" + term + "\"");
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
return in.readLine();
} catch (IOException e) {
System.err.println(e.getMessage());
}
return "";
}
public static String getEdition() {
String osName = findSysInfo("OS Name:");
if (!osName.isEmpty()) {
for (String edition : EDITIONS) {
if (osName.contains(edition)) {
return edition;
}
}
}
return null;
}
}
public static void main(String[] args) {
System.out.println("os.name: " + System.getProperty("os.name"));
System.out.println("os.version: " + System.getProperty("os.version"));
System.out.println("os.arch: " + System.getProperty("os.arch"));
}
输出:
os.name: Windows 8.1
os.version: 6.3
os.arch: amd64
欲了解更多信息(最重要的系统属性):
- 1. 如何检查甲骨文的Java版本,如果多个Java版本在Ubuntu
- 2. 如何在运行时检查Win32中的Windows版本?
- 3. 如何在wix中检查sql版本
- 4. 如何在OpenSUSE中检查lxml版本
- 5. 如何检查在C++中使用的java im版本
- 6. 如何在javascript中检查java版本的范围?
- 7. 如何检查Windows版本是否为正版?
- 8. 如何检查Spark版本
- 9. 如何检查LS版本
- 10. 如何检查Vala中的gtk版本?
- 11. 检查Windows安装程序版本
- 12. Python的检查Windows服务器版本
- 13. 如何检测Windows的语言版本
- 14. 如何在远程Debian机器上检查java版本
- 15. PHP - 如何检查脚本版本
- 16. 在Go中检测windows版本
- 17. 如何获取Windows版本 - 如“Windows 10,版本1607”中所示?
- 18. 如何检查机器上安装的Windows Media Player版本?
- 19. 如何检查引导程序(wix)中版本检查的condtiotion?
- 20. 如何检查哪个JRuby版本与哪个Java版本兼容?
- 21. 面向未来的Java版本检查
- 22. 如何在windows git bash中设置java版本?
- 23. 在Windows Server 2008中查找IE版本
- 24. 在Java 7中Java版本检查退出代码已更改Java 7中?
- 25. 如何检查当前版本的Java是否高于1.6
- 26. 运行gradle时如何检查java版本?
- 27. 安装程序如何检查java版本
- 28. 如何检查安装的Mahout版本?
- 29. 如何检查我的OpenGL版本?
- 30. 如何检查OpenMPI的版本?
你怎么会检查它的Java之外? – 2011-05-24 11:34:34
本文提供有关Windows版本和版本的一些详细信息http://msdn.microsoft.com/en-us/library/ms724429(v=vs.85).aspx – 2011-05-24 11:53:42
@Vash,即使您的文章很有帮助, OP想从Java获得信息(而不是C/C++) – 2011-05-24 11:59:52