Как получить системные данные и сделать уникальным мое приложение для ОС - PullRequest
2 голосов
/ 10 сентября 2011

Я хочу знать, как получить уникальный идентификатор ПК, на котором установлено мое приложение. Я следовал за некоторыми вопросами в здесь . Но я не мог им воспользоваться. Пожалуйста, дайте мне знать, как сделать это на Java с примером кода или любой полезной ссылкой. (По крайней мере, как получить информацию о системе на Java) Спасибо

Ответы [ 3 ]

1 голос
/ 10 сентября 2011

это нестабильная идея с нестабильным выходом, отмечая там гарантию, что вы получили правильную информацию о компьютерах и пользователях, уникальный идентификатор ПК и более достоверные результаты, возвращает компьютеры в Интранет (не Interner) за HW FireWall

проблемы:

  • IP можно изменить
  • MAC может быть с псевдонимом

Novell, AD может добавить подробную информацию пользователя, а некоторые компьютеры (все HP / Compaq) не возвращают конфигурации 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);        
}

как получить MAC например здесь

1 голос
/ 11 сентября 2011

ИМХО, простой и эффективный способ - получить идентификатор жесткого диска.На Windows разбираем вывод "dir".Это стабильно до тех пор, пока пользователь не заменит жесткий диск и не переустановит ОС, но не будет идеальным.

1 голос
/ 10 сентября 2011

Вы можете использовать mac-адрес системы, каждая система имеет уникальный mac-адрес.

/*
* Get NetworkInterface for the current host and then read the
* hardware address.
*/

NetworkInterface ni = NetworkInterface.getByInetAddress(address);

    if (ni != null) {
        byte[] mac = ni.getHardwareAddress();
        if (mac != null) {

        /*
        * Extract each array of mac address and convert it to hexa with the
        * following format 08-00-27-DC-4A-9E.
        */
        for (int i = 0; i < mac.length; i++) {
            System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "");
            }
        } else {
        System.out.println("Address doesn't exist or is not accessible.");
        }
    } else {

        System.out.println("Network Interface for the specified address is not found.");

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...