VC++怎么获取计算机的机器码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++怎么获取计算机的机器码相关的知识,希望对你有一定的参考价值。

参考技术A 所谓机器的机器码其实就是电脑的一些特征码,包括硬盘序列号、CPU编号、Bios编号等等和硬件有关的编号。
你可以用在VC++中获取这些编号,并用一定的算法将他们组合后,就生成了一个机器码,用这个机器码按照一定的算法生成一个注册码,这样就对你的软件进行了保护,使得只有拥有这个机器码的机器才能安装你的软件。
获取硬盘序列号的方法如下(代码)
以驱动器C为例:
char
m_Volume[256];//卷标名
char
m_FileSysName[256];
DWORD
m_SerialNum;//序列号
DWORD
m_FileNameLength;
DWORD
m_FileSysFlag;
::GetVolumeInformation("c:\\",
m_Volume,
256,
&m_SerialNum,
&m_FileNameLength,
&m_FileSysFlag,
m_FileSysName,
256);
执行该函数后,m_Volume就是卷标名字符串,m_SerialNum就是序列号
参考技术B 你可以用在vc++中获取这些编号,并用一定的算法将他们组合后,就生成了一个机器码,用这个机器码按照一定的算法生成一个注册码,这样就对你的软件进行了保护,使得只有拥有这个机器码的机器才能安装你的软件。
获取硬盘序列号的方法如下(代码)
以驱动器c为例:
char
m_volume[256];//卷标名
char
m_filesysname[256];
dword
m_serialnum;//序列号
dword
m_filenamelength;
dword
m_filesysflag;
::getvolumeinformation(c:\\,
m_volume,
256,
&m_serialnum,
&m_filenamelength,
&m_filesysflag,
256);执行该函数后,m_volume就是卷标名字符串,m_serialnum就是序列号

用vc怎么获取硬件信息

用VC6.0版的语言怎么获取系统的硬件信息,例如CPU:P4,2.6G;内存:HY512M之类的

  1、获取CPU名称:

  获取HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0子键中获取ProcessorNameString的键值。该注册表子键存储了当前计算机的处理器信息,如CPU名称、标识和厂商等。

void CSystemHardwareInfoDlg::OnButton1() 

CString strPath="HARDWARE\\\\DESCRIPTION\\\\System\\\\CentralProcessor\\\\0";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

    //打开注册表主键   
    if (lResult!=ERROR_SUCCESS)//读取键值不成功   
      
        AfxMessageBox("错误:无法查询有关的注册表信息");  
        return;  
      
    char chCPUName[50];  
    DWORD dwSize=50;  
    regKey.QueryValue(chCPUName,"ProcessorNameString",&dwSize);  
    //获取RegisteredOwner的值   
    m_strCPUName=chCPUName;  
    UpdateData(FALSE);  
    regKey.Close();//关闭注册表

  2、获取CPU标识 :

  获取HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0子键中获取Identifier的键值。

void CSystemHardwareInfoDlg::OnButton2() 

CString strPath="HARDWARE\\\\DESCRIPTION\\\\System\\\\CentralProcessor\\\\0";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

    //打开注册表主键   
    if (lResult!=ERROR_SUCCESS)//读取键值不成功   
      
        AfxMessageBox("错误:无法查询有关的注册表信息");  
        return;  
      
    char chCPUID[50];  
    DWORD dwSize=50;  
    regKey.QueryValue(chCPUID,"Identifier",&dwSize);  
    //获取RegisteredOwner的值   
    m_strCPUIdentifier=chCPUID;  
    UpdateData(FALSE);  
    regKey.Close();//关闭注册表

  3、获取CPU制造商名称 :

  获取HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0子键中获取VendorIdentifier的键值。

void CSystemHardwareInfoDlg::OnButton3() 

CString strPath="HARDWARE\\\\DESCRIPTION\\\\System\\\\CentralProcessor\\\\0";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

    //打开注册表主键   
    if (lResult!=ERROR_SUCCESS)//读取键值不成功   
      
        AfxMessageBox("错误:无法查询有关的注册表信息");  
        return;  
      
    char chVendor[50];  
    DWORD dwSize=50;  
    regKey.QueryValue(chVendor,"VendorIdentifier",&dwSize);  
    //获取RegisteredOwner的值   
    m_strVendorID=chVendor;  
    UpdateData(FALSE);  
    regKey.Close();//关闭注册表

  4、获取CPU主频 :

  获取HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0子键中获取~MHz的键值。注意为DWORD类型。

void CSystemHardwareInfoDlg::OnButton4() 

CString strPath="HARDWARE\\\\DESCRIPTION\\\\System\\\\CentralProcessor\\\\0";
CRegKey regKey;
LONG lResult;
lResult=regKey.Open(HKEY_LOCAL_MACHINE,LPCTSTR(strPath),KEY_ALL_ACCESS);

    //打开注册表主键   
    if (lResult!=ERROR_SUCCESS)//读取键值不成功   
      
        AfxMessageBox("错误:无法查询有关的注册表信息");  
        return;  
      
    DWORD dwMHz; 
    DWORD dwSize=50;  
    regKey.QueryValue(dwMHz,"~MHz");  
    //获取RegisteredOwner的值   
    m_nMHz=dwMHz;  
    UpdateData(FALSE);  
    regKey.Close();//关闭注册表

  

参考技术A 获取硬件信息(好使给加分呀)

在.net环境下(用VC#描述)获取机器的硬件信息,要用到一个类库(System.Management.dll),在解决方案资源管理器中添加System.Management 即可

我们可以将该程序编译成.dll文件,便于以后调用;

在程序代码中进行引用 using System.Management;

具体 代码为:

1.获取机器名:

public string GetHostName()

return System.Net.Dns.GetHostName();


2.获取CPU编号

public string GetCpuId()



ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();

String strCpuID = null ;
foreach( ManagementObject mo in moc )

strCpuID = mo.Properties["ProcessorId"].Value.ToString();
break;

return strCpuID;



3.获取主硬盘编号

public string GetMainHardDiskId()



ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
String strHardDiskID = null ;
foreach(ManagementObject mo in searcher.Get())

strHardDiskID = mo["SerialNumber"].ToString().Trim();
break;

return strHardDiskID ;



4.获取bios和mac地址,这个有点复杂,需要用到NETAPI32.DLL

以上是关于VC++怎么获取计算机的机器码的主要内容,如果未能解决你的问题,请参考以下文章

VC++如何获取机器码?硬盘序列号、CPU编号、BIOS编号等~

文字处理9_VC++V6—基本要点

vc++6.0和VC2017区别

vc ++获取程序执行时间时间

如何在vc++中判断计算机是不是安装c运行时库

在VC6.0下如何计算一个程序的运行时间