最後我用下面的代碼,因爲我分析了最有可能的註冊表路徑不會被改變。
private final String STR_OS_NAME_REGISTRY_QUERY = "reg query \"HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\" /v \"ProductName\"";
// Get OS name
objProcessName = Runtime.getRuntime().exec(STR_OS_NAME_REGISTRY_QUERY);
objProcessName.waitFor();
objBufferReader = new BufferedReader(new InputStreamReader(objProcessName.getInputStream()));
lstJavaInfo = new ArrayList<>();
while ((sLine = objBufferReader.readLine()) != null)
{
lstJavaInfo.add(sLine);
}
objProcessName.waitFor();
if(lstJavaInfo.size() < 3)
{
return "-";
}
String[] sarr = lstJavaInfo.get(2).split("\\s+");
for(int nIndex = 3 ; nIndex < sarr.length ; nIndex++)
{
sOSArchitecture = sOSArchitecture + sarr[nIndex] + " ";
}
在Java中,不是真的,沒有......除非有人在某個地方開發了涵蓋每種可能情況的本地庫。 – fge
我意識到這並不好,但是'systeminfo/nh/fo csv'將總是(我認爲)輸出操作系統名稱作爲第二個逗號分隔值。至少它不依賴於特定於語言環境的頭文件。 – VGR