【问题标题】:How to get ID of computer?如何获取计算机的ID?
【发布时间】:2011-02-06 04:45:41
【问题描述】:

在 vb.net 或 java 中是否有任何代码来获取计算机的 ID >>?? 我想编写一个可以获取计算机 ID 的程序,以便像微软一样获得软件许可证?

提前致谢

马卡拉

【问题讨论】:

  • 电脑ID是什么意思?
  • 我认为他的意思是使用 WMI 读取主板序列号 - 请参阅上面链接的 SO 问题。
  • 我的意思是在一台计算机中应该有类似 id 的东西来识别。

标签: java vb.net


【解决方案1】:

首先,微软许可不能以这种方式工作。

他们有一个在他们身边生成的密钥。当他们向您出售软件副本时,他们会给您一把钥匙。输入密钥后,软件会将一些加密的 tcp 数据包发送回 MS,以识别密钥现在正在使用中并增加使用次数。然后它会在您的系统上创建一个很好的隐藏文件,其中包含该密钥的授权。

这些都不涉及获取“计算机 ID”。

现在,MS(至少在他们的一种许可模式下)确实对系统进行了快照,其中包括处理器类型、硬盘驱动器和主板品牌/型号,以确定组件是否发生了足够的变化以触发潜在的检查计算机许可证是否需要重新验证。

这让我们回到了计算机系统中没有单一“ID”的想法。上一次尝试是英特尔(我相信?)他们的 PII 处理器。然而,公众的强烈反对足以让他们停止在芯片上放置序列号。

您可以做的下一个最接近的事情是尝试读取 MAC 地址;但是网卡的变化太频繁了,以至于到处都是陷阱。

如果你真的想要的话,我强烈建议你研究其他机制来制作许可密钥。

【讨论】:

    【解决方案2】:

    你可以使用这个函数,它会返回mac地址:

    public String macname() throws IOException {
        String mac = "null";
        String[] getmac = new String[] { "cmd", "/c", "getmac /NH" };
        Process pnew = Runtime.getRuntime().exec(getmac);
        BufferedReader newin = new BufferedReader(new InputStreamReader(
                pnew.getInputStream()));
        String line1 = "";
        String ab = "";
    
        while ((line1 = newin.readLine()) != null) {
            ab = ab + line1;
        }
        int in = ab.indexOf(' ');
        mac = ab.substring(0, in);
        return mac;
    }
    

    【讨论】:

    • 计算机当然没有 MAC ID。网卡可以,但计算机可以有多个网络接口卡。
    猜你喜欢
    • 2018-09-04
    • 2012-02-23
    • 2013-07-05
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 2018-10-13
    相关资源
    最近更新 更多