相关疑难解决方法(0)

唯一的电脑ID

我正在寻找一种获得独特计算机ID的方法.

根据这篇文章,我不能为此目的使用处理器ID.我可以拿主板ID吗?识别计算机的最佳方法是什么?

system-identification

30
推荐指数
2
解决办法
5万
查看次数

是否有任何方法可以唯一地识别任何计算机

我知道stackoverflow中有很多类似的问题,如下所示:

......还有几十个,我研究过它们.

问题是一些已接受的答案已将MAC地址建议为唯一标识符,这完全不正确.其他一些答案建议使用各种组件的组合,这似乎更合乎逻辑.但是,在使用组合的情况下,应该考虑哪些组件自然不可能经常更换.几天前,我们为软件许可问题开发了一个密钥生成器,我们使用CPUID和MAC的组合来唯一地识别一台Windows PC,直到实际测试我们认为我们的方法已经足够好了.具有讽刺意味的是,当我们进行测试时,我们发现有三台计算机使用我们的密钥生

那么,真的有任何方法可以唯一地识别任何计算机吗?现在我们只需要让我们的密钥生成器在windows pc上运行.使用c#的某种方式(如果可能的话)会很好,因为我们的系统是在.net上开发的.

更新:

很抱歉造成一些混乱和明显错误的警报.我们在检索HW信息的方法中发现了一些不正确之处.主要是我想删除这个问题,因为现在我自己的困惑已经消失,我确实认为两个或更多组件的组合足以识别计算机.然而,然后我决定保留它,因为我认为我应该澄清导致问题的原因,因为同样的事情可能会伤害其他人.

这就是我们正在做的事情(不包括其他代码):

我们使用getManagementInfo函数来检索MAC和处理器ID

private String getManagementInfo(String StrKey_String, String strIndex)
    {
        String strHwInfo = null;
        try
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from " + StrKey_String);
            foreach (ManagementObject share in searcher.Get())
            {
                strHwInfo += share[strIndex];
            }
        }
        catch (Exception ex)
        {
            // show some error message
        }
        return strHwInfo;
    } 
Run Code Online (Sandbox Code Playgroud)

然后在需要的地方我们使用该函数来检索MAC地址

string strMAC = getManagementInfo("Win32_NetworkAdapterConfiguration", "MacAddress");
Run Code Online (Sandbox Code Playgroud)

并检索ProcessorID

string strProcessorId = getManagementInfo("Win32_Processor", "ProcessorId");
Run Code Online (Sandbox Code Playgroud)

此时,strMAC …

c# windows uniqueidentifier

30
推荐指数
2
解决办法
2万
查看次数

从.NET中的网络适配器读取MAC地址

我希望能够使用VB.net或C#(使用.NET 3.5 SP1)从第一个活动网络适配器读取mac地址以获取winform应用程序

.net ethernet mac-address

17
推荐指数
2
解决办法
3万
查看次数

10
推荐指数
1
解决办法
3445
查看次数

两台Intel机器上的CPU ID相同

可能重复:
WIN32_Processor ::是ProcessorId对所有计算机都是唯一的

我正在创建一个具有试用功能的应用程序.要检测某个用户是否已经使用过试用版,应用程序会使用它们连接到我的服务器machineHash.

machineHash功能是这样的:

string cpuInfo = string.Empty;
ManagementClass mc = new ManagementClass("win32_processor");
ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)
{
    if (cpuInfo == "")
    {
        //Get only the first CPU's ID
        cpuInfo = mo.Properties["processorID"].Value.ToString();
        break;
    }
}
return cpuInfo;
Run Code Online (Sandbox Code Playgroud)

但是,它确实将我的处理器ID报告为BFEBFBFF000206A7(在两台不同的Intel机器上,i5和Celeron).谷歌搜索BFEBFBFF000206A7也有点击,所以它不是唯一的.

谁能告诉我为什么这不是唯一的?我不想使用VolumeSerial,C:\因为可以通过简单的命令轻松更改驱动器.

c#

6
推荐指数
1
解决办法
6850
查看次数

获取处理器ID或某些硬件信息的最安全方法

我需要获取任何信息以识别机器,到目前为止我使用的是以下内容:

    internal static string GetProcessorId()
    {
        try
        {
            StringBuilder sb = new StringBuilder();
            using (System.Management.ManagementClass theClass = new System.Management.ManagementClass("Win32_Processor"))
            {
                using (System.Management.ManagementObjectCollection theCollectionOfResults = theClass.GetInstances())
                {
                    foreach (System.Management.ManagementObject currentResult in theCollectionOfResults)
                    {
                        sb.Append(currentResult["ProcessorID"].ToString());
                    }
                }
            }
            return sb.ToString();
        }
        catch (Exception exception)
        {
            Console.WriteLine(exception.Message);
            return "";
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是当我在Windows XP(从虚拟机)上运行它时,我currentResult["ProcessorID"]就是null.我不确定是不是因为我使用的是虚拟机,但可能是因为它是XP.无论如何,我不太相信这段代码.它足够安全吗?我应该以其他方式获得计算机ID吗?这是我正在开发的许可系统的一部分.

.net c# .net-4.0

4
推荐指数
1
解决办法
2万
查看次数

从PC获取唯一的硬件ID

我尝试从PC上获取硬盘和主板序列号。在Windows 7及更高版本中效果很好

但是CMD中的相同代码不适用于Windows XP。显示OEM已满或什么也没有退货

wmic diskdrive get name,serialnumber,model // This is cmd to get serial num
Run Code Online (Sandbox Code Playgroud)

在Windows XP中,它返回序列号错误

wmic baseboard get product,Manufacturer,version,serialnumber // This is cmd to get MotherBoard serialnumber
Run Code Online (Sandbox Code Playgroud)

在Windows XP和Win 8中,它返回序列号错误,例如“ 由OEM填充

我正在寻找Best Pc Unique Id,它可以为任何操作系统返回ID或序列号,并且应该是唯一的。

请帮我

谢谢。

vb.net cmd command-prompt vb.net-2010

-1
推荐指数
1
解决办法
7346
查看次数