相关疑难解决方法(0)

生成唯一的计算机ID

我需要编写一个函数来生成一个id,该id对于运行Windows操作系统的给定机器是唯一的.

目前,我正在使用WMI查询各种硬件参数并将它们连接在一起并散列它们以获得唯一的id.我的问题是,我应该使用的建议参数是什么?目前,我正在使用bios\cpu\disk数据的组合来生成唯一ID.如果每个指标有多个结果,我会使用第一个结果.

但是,我遇到了一个问题,即双引导到两个不同的Windows操作系统的机器在每个操作系统上生成不同的站点代码,理想情况下不会发生这种情况.

作为参考,这些是我目前使用的指标:

Win32_Processor:UniqueID,ProcessorID,Name,Manufacturer,MaxClockSpeed
Win32_BIOS:Manufacturer
Win32_BIOS:SMBIOSBIOSVersion,IdentificationCode,SerialNumber,ReleaseDate,Version
Win32_DiskDrive:Model, Manufacturer, Signature, TotalHeads
Win32_BaseBoard:Model, Manufacturer, Name, SerialNumber
Win32_VideoController:DriverVersion, Name
Run Code Online (Sandbox Code Playgroud)

windows wmi winapi uniqueidentifier

101
推荐指数
3
解决办法
10万
查看次数

唯一识别计算机的好方法是什么?

我正在开发一些桌面软件供客户转售.客户希望限制软件,以便注册码特定于一台且只有一台计算机.

除了使用网卡中的MAC之外,是否还有其他任何技术(适用于Windows和Mac OS X)以便唯一识别计算机?

windows macos uniqueidentifier

52
推荐指数
6
解决办法
6万
查看次数

如何在C#中快速获取Hardware-ID?

我需要在我的程序中将许可证绑定到硬件ID.我尝试过使用WMI,但它仍然很慢.

我需要,例如,CPU,HDD和主板信息.

.net c# hardware cpu hardware-id

41
推荐指数
3
解决办法
9万
查看次数

唯一的电脑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万
查看次数

是否有唯一的计算机标识符,即使在虚拟机中也可以可靠地使用?

我正在编写一个小型客户端程序,以便在终端服务器上运行.我正在寻找一种方法来确保它只能在指定的服务器上运行,如果它从服务器中删除它将停止运行.

我知道没有办法让它100%安全,但我想让大多数高级用户都难以做到这一点.

我正在查看不同的唯一标识符,如处理器ID,Windows产品ID,计算机GUID和其他UI.由于终端服务器是虚拟机,因此无法找到任何完全独特的机器.

关于我应该考虑什么的任何想法,使这大多是安全的.我没有时间或者没有必要让它尽可能安全,因为它会破坏应用程序本身的目的.

我不想用户MAC地址.尽管每台机器都是独一无二的,但它可以通过互联网上的说明进行欺骗.

至于Microsoft产品ID,因为我们的系统团队克隆了VM服务器并且我们使用公司卷密钥,所以我发现已经有两个我有权访问的服务器具有相同的产品ID号.我不知道有多少其他人拥有相同的产品ID

或者,我可能会通过识别用户并创建通过AD处理的基于组的权限来访问此软件,而不是尝试识别机器.

.net c# security macos vmware

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

使用.net从Dell Machine获取服务标签?

我有一个类可以为本地机器代码提取模型信息(硬件信息),如下所示:

   Imports System.Management

Public Class clsWMI
    Private objOS As ManagementObjectSearcher
    Private objCS As ManagementObjectSearcher
    Private objMgmt As ManagementObject
    Private m_strComputerName As String
    Private m_strManufacturer As String
    Private m_StrModel As String
    Private m_strOSName As String
    Private m_strOSVersion As String
    Private m_strSystemType As String
    Private m_strTPM As String
    Private m_strWindowsDir As String


    Public Sub New()

        objOS = New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")
        objCS = New ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem")
        For Each objMgmt In objOS.Get


            m_strOSName = objMgmt("name").ToString()
            m_strOSVersion = objMgmt("version").ToString()
            m_strComputerName = …
Run Code Online (Sandbox Code Playgroud)

c# vb.net wmi

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