那位高人可以指导下
java怎么获取操作系统中所有的用户账号java用户

解决方案 »

  1.   

    估计这个在不同的操作系统中,做法不一样,应该没有java的通用api吧,如果是win系统,可以考虑采用这种方法,获取C:\Documents and Settings下的文件夹名称。不过这方法肯定不一定好,仅供参考。
      

  2.   

    使用JNA,在platform.jar中有对应的方法。
      

  3.   

    到这里(JNA)下载
        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();
    } }}
      

  4.   

    具体下载地址:jna.jarplatform.jar
      

  5.   

    多谢高人指点,但是这个也只能获取所有用户,不能得到Administrators组下的所有账户
      

  6.   


        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();   
            }   
          
        }  
      

  7.   


        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();   
            }   
          
        }  
      

  8.   

    public static void main(String[] args) {     
            Runtime run = Runtime.getRuntime();   
            try {   
                run.exec("cmd net user ");   
            } catch (Exception e) {            
                e.printStackTrace();   
            }   
           
        }  调用cmd命令来执行完美的三连
      

  9.   

    过滤一下就可以了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楼这种方法也很可取
      

  10.   

    纯命令行操作的话是NET LOCALGROUP Administrators
      

  11.   

    用命令行确实可行,但是如果是linux呢