Java 如何将Hyperic SIGAR API与小程序结合使用来检测客户端操作系统版本和体系结构
如何将Hyperic SIGAR API与小程序一起使用,以检测客户端操作系统版本和体系结构Java 如何将Hyperic SIGAR API与小程序结合使用来检测客户端操作系统版本和体系结构,java,applet,Java,Applet,如何将Hyperic SIGAR API与小程序一起使用,以检测客户端操作系统版本和体系结构 实际上,我需要使用APPLET检测客户机的操作系统验证和体系结构。我打算用西格尔。但是sigar.jar需要一些DLL来检测信息,这使我无法使用它来检测客户端系统的操作系统信息。请提供帮助。如果小程序已签名,则不需要任何特殊API。 您可以使用Java内置库 要获取系统信息,可以读取java系统变量os.version、os.arch和os.name 以下是代码,您可以从它开始查找这些变量: packa
实际上,我需要使用APPLET检测客户机的操作系统验证和体系结构。我打算用西格尔。但是sigar.jar需要一些DLL来检测信息,这使我无法使用它来检测客户端系统的操作系统信息。请提供帮助。如果小程序已签名,则不需要任何特殊API。 您可以使用Java内置库 要获取系统信息,可以读取java系统变量os.version、os.arch和os.name 以下是代码,您可以从它开始查找这些变量:
package com.ic.utils;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;
/**
* Prints different system variables
* @author MockerTim
*/
public class EnvFinder {
/**
* Prints environment variables
*/
public void listSystemEnv() {
System.out.println("\nSystem Environment Variables:\n");
Map<String,String> map = System.getenv();
Set<Entry<String,String>> entrys = map.entrySet();
Entry<String,String>[] a = sortSystemEnv(entrys);
for (int i = 0; i < a.length; i++) {
Entry<String, String> entry = a[i];
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
private Entry<String,String>[] sortSystemEnv(Set<Entry<String,String>> set) {
Entry<String,String>[] a = new Entry[set.size()];
set.toArray(a);
Arrays.sort(a, new Comparator<Entry<String,String>>() {
@Override
public int compare(Entry<String, String> o1, Entry<String, String> o2) {
return o1.getKey().compareToIgnoreCase(o2.getKey());
}
});
return a;
}
/**
* Prints java system properties
*/
public void listJavaSystemProperties() {
System.out.println("\nJava System Properties:\n");
Properties sysProp = System.getProperties();
Set<String> keys = sysProp.stringPropertyNames();
Pair<String,String>[] pairs = new Pair[keys.size()];
int i = 0;
for (String string : keys) {
pairs[i++] = new Pair<String,String>(string, sysProp.getProperty(string));
}
Arrays.sort(pairs, new Comparator<Pair<String,String>> () {
@Override
public int compare(Pair<String, String> o1, Pair<String, String> o2) {
return o1.getFirst().compareToIgnoreCase(o2.getFirst());
}
});
for (int j = 0; j < pairs.length; j++) {
Pair<String, String> pair = pairs[j];
System.out.println(pair.getFirst() + " : " + pair.getSecond());
}
}
public static void main(String[] args) {
EnvFinder instance = new EnvFinder();
instance.listJavaSystemProperties();
instance.listSystemEnv();
}
}
/**
* Support class for EnvFinder.class
* @author tss
* @param <T0>
* @param <T1>
*/
class Pair<T0, T1> {
public Pair (T0 t0, T1 t1) {
first = t0;
second = t1;
}
public T0 getFirst() {
return first;
}
public T1 getSecond() {
return second;
}
private T0 first;
private T1 second;
}
更新:
看到和
. 这应该对你有帮助。@tim:谢谢你的回答。实际上,我的操作方法和你的差不多,但可靠性不高。@tim:在JAVA中,os.name、os.arch和os.version的系统属性不能保证总是提供有用的信息。这在很大程度上取决于您使用的平台和JVM。这就是为什么我喜欢西格。但问题是它使用了一些本机函数,因此它附带了许多DLL,它们实际上提供了系统信息。这里我需要客户端操作系统的信息,并且必须使用APPLET。这就是为什么我问如何将SIGAR与APPLET捆绑在一起。此外,我不能使用用户代理,否则我会使用它。