java怎么获取操作系统中所有的用户 那位高人可以指导下java怎么获取操作系统中所有的用户账号java用户 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 估计这个在不同的操作系统中,做法不一样,应该没有java的通用api吧,如果是win系统,可以考虑采用这种方法,获取C:\Documents and Settings下的文件夹名称。不过这方法肯定不一定好,仅供参考。 使用JNA,在platform.jar中有对应的方法。 到这里(JNA)下载 jna.jar platform.jarWindow系统获取用户信息代码如下:import com.sun.jna.platform.win32.Advapi32Util;import com.sun.jna.platform.win32.Netapi32Util;public class JnaTest { /** * @param args */ public static void main(String[] args) { Netapi32Util.User[] users = Netapi32Util.getUsers(); System.out.println("用户数量: " + users.length); System.out.println(); for (Netapi32Util.User user : users) { System.out.println("账户名称:" + user.name); Advapi32Util.Account account = Advapi32Util .getAccountByName(user.name); System.out.println("账户全名:" + account.fqn); System.out.println("账户SID:" + account.sidString); System.out.println(); } }} 具体下载地址:jna.jar和platform.jar 多谢高人指点,但是这个也只能获取所有用户,不能得到Administrators组下的所有账户 public static void main(String[] args) { String path = "D:\\public.bat"; Runtime run = Runtime.getRuntime(); try { run.exec("cmd net user "); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Runtime run = Runtime.getRuntime(); try { // run.exec("cmd /k shutdown -s -t 3600"); Process process = run.exec("cmd.exe /k start " + path); InputStream in = process.getInputStream(); while (in.read() != -1) { System.out.println(in.read()); } in.close(); process.waitFor(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Runtime run = Runtime.getRuntime(); try { run.exec("cmd net user "); } catch (Exception e) { e.printStackTrace(); } } 调用cmd命令来执行完美的三连 过滤一下就可以了public class JnaTest { /** * @param args */ public static void main(String[] args) { Netapi32Util.User[] users = Netapi32Util.getUsers(); System.out.println("用户数量: " + users.length); System.out.println(); List<Netapi32Util.User> administrators=new ArrayList<Netapi32Util.User>(); /*过滤用户,取出管理员账户*/ for (Netapi32Util.User user : users) { Netapi32Util.Group[] groups=Netapi32Util.getUserLocalGroups(user.name); for(Netapi32Util.Group group:groups){ if(group.name.equals("Administrators")){ administrators.add(user); break; } } } System.out.println("管理员数量: " + administrators.size()); System.out.println(); for (Netapi32Util.User user : administrators) { System.out.println("账户名称:" + user.name); Advapi32Util.Account account = Advapi32Util .getAccountByName(user.name); System.out.println("账户全名:" + account.fqn); System.out.println("账户SID:" + account.sidString); System.out.println(); } }}3楼这种方法也很可取 纯命令行操作的话是NET LOCALGROUP Administrators 用命令行确实可行,但是如果是linux呢 大家帮忙看下,为什么会编译错误? 新手求助!! java中字符串的equals和“==”运算问题 获得剪切板问题 java初始化问题 在tomcat web.xml里实例的生命周期 请教个 log4j 指定配置文件的问题 applet网页中不显示 load:class XX not found 讨论JAVA中的对象的克隆,高手ing~~~~~~~~!1 今天开始重新读《Think in java》,特散分100: 关于Java时间转换的问题 小公司笔试题一道,还新鲜呢,今天刚做的
jna.jar
platform.jar
Window系统获取用户信息代码如下:
import com.sun.jna.platform.win32.Advapi32Util;
import com.sun.jna.platform.win32.Netapi32Util;public class JnaTest { /**
* @param args
*/
public static void main(String[] args) { Netapi32Util.User[] users = Netapi32Util.getUsers();
System.out.println("用户数量: " + users.length);
System.out.println();
for (Netapi32Util.User user : users) { System.out.println("账户名称:" + user.name);
Advapi32Util.Account account = Advapi32Util
.getAccountByName(user.name);
System.out.println("账户全名:" + account.fqn);
System.out.println("账户SID:" + account.sidString);
System.out.println();
} }}
public static void main(String[] args) {
String path = "D:\\public.bat";
Runtime run = Runtime.getRuntime();
try {
run.exec("cmd net user ");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Runtime run = Runtime.getRuntime();
try {
// run.exec("cmd /k shutdown -s -t 3600");
Process process = run.exec("cmd.exe /k start " + path);
InputStream in = process.getInputStream();
while (in.read() != -1) {
System.out.println(in.read());
}
in.close();
process.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
}
Runtime run = Runtime.getRuntime();
try {
run.exec("cmd net user ");
} catch (Exception e) {
e.printStackTrace();
}
} 调用cmd命令来执行完美的三连
* @param args
*/
public static void main(String[] args) { Netapi32Util.User[] users = Netapi32Util.getUsers();
System.out.println("用户数量: " + users.length);
System.out.println();
List<Netapi32Util.User> administrators=new ArrayList<Netapi32Util.User>();
/*过滤用户,取出管理员账户*/
for (Netapi32Util.User user : users) {
Netapi32Util.Group[] groups=Netapi32Util.getUserLocalGroups(user.name);
for(Netapi32Util.Group group:groups){
if(group.name.equals("Administrators")){
administrators.add(user);
break;
}
}
}
System.out.println("管理员数量: " + administrators.size());
System.out.println();
for (Netapi32Util.User user : administrators) {
System.out.println("账户名称:" + user.name);
Advapi32Util.Account account = Advapi32Util
.getAccountByName(user.name);
System.out.println("账户全名:" + account.fqn);
System.out.println("账户SID:" + account.sidString);
System.out.println();
}
}}3楼这种方法也很可取