Como obter dados do sistema e tornar meu aplicativo exclusivo para o SO

Quero saber como obter um identificador exclusivo do PC que meu aplicativo instalou. Segui algumas perguntas aqui, mas não consegui usá-lo. Por favor, deixe-me saber como fazê-lo em Java com código de exemplo ou qualquer link útil (pelo menos como obter detalhes do sistema em Java)

Resposta 1

essa idéia não estável com saída instável, observando que você recebeu informações corretas sobre o computador e o usuário, um identificador exclusivo do PC e resultados mais confiáveis ​​retorna computadores na Intranet (não Interner) atrás do HW FireWall

problemas:

  • IP pode ser mudado
  • O MAC pode ser aliado

A Novell, AD pode adicionar informações de usuário detalhadas e alguns computadores (todos os HP / Compaq) não retornam configurações de HW

private void getPcInfo() {
    Enumeration<?> interfaces = null;
    try {
        PcLogName = InetAddress.getLocalHost().getHostName();
        InetAddress local = InetAddress.getLocalHost();
        InetAddress[] all_local = InetAddress.getAllByName(local.getHostName());
        LinkedList<InetAddress> list = new LinkedList<InetAddress>();
        //System.out.println("PcLogName " + PcLogName);
        //System.out.println("PcLogName " + list);
        try {
            interfaces = NetworkInterface.getNetworkInterfaces();
            ////System.out.println("NetworkInterface " + interfaces);
        } catch (SocketException ex) {
            Logger.getLogger(GuiFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
        while (interfaces.hasMoreElements()) {
            NetworkInterface card = (NetworkInterface) interfaces.nextElement();
            ////System.out.println("NetworkInterface NetCard " + card);
            Enumeration<?> addresses = card.getInetAddresses();
            ////System.out.println("NetCard Name " + addresses);
            if (addresses == null) {
                continue;
            }
            while (addresses.hasMoreElements()) {
                InetAddress address = (InetAddress) addresses.nextElement();
                list.add(address);
                //System.out.println("Add Address : " + address);
            }
        }
        //System.out.println("IP's Address " + list);
    } catch (UnknownHostException ex) {
        Logger.getLogger(GuiFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
    PcLogUser = System.getProperty("user.name");
    //System.out.println("PcLogUser : " + PcLogUser);
    WinUser = System.getenv("USER");
    //System.out.println("WinUser : " + WinUser);
    WinDsn = System.getenv("USERDOMAIN");
    //System.out.println("WinDsn : " + WinDsn);
    WinUserName = System.getenv("USERNAME");
    //System.out.println("WinUserName : " + WinUserName);
    WinPath = System.getenv("USERPROFILE");
    //System.out.println("WinPath : " + WinPath);
    ComputerName = System.getenv("COMPUTERNAME");
    //System.out.println("ComputerName : " + ComputerName);
    PcInfo = System.getenv("System Model");
    //System.out.println("PcInfo : " + PcInfo);        
}

como obter MAC por exemplo aqui

Resposta: 2

Eu tenho um serviço web REST usando o Spring MVC, que é voltado para o exterior. Gostaria de restringir o acesso a algumas chamadas REST para uso de administrador e para outros servidores na mesma rede interna. Então ...

Eu criei um analisador XML que contém uma exibição de detalhes. Estou lendo em um feed RSS que contém uma tag de gabinete. Estou tentando obter o URL do arquivo de vídeo da etiqueta do gabinete. Isto é ...

1ª fase Tenho um problema ao desligar minha instância do JBoss em execução no Eclipse desde que alterei a porta JNDI do JBoss. Claro que posso desligá-lo da visualização do console, mas não com a parada ...

Eu tenho um modelo string str = "Olá% s, seu nome é% s,% s nasceu em 1990." Quero formatar esta string, como abaixo: Olá Sr.P, seu nome é Sr.P, o Sr.P nasceu em 1990. Eu posso fazer o seguinte ...