所谓机器的机器码其实就是电脑的一些特征码,包括硬盘序列号、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就是序列号
一个实例:
//获取机器码 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); CString Serial; Serial.Format("1%04x",m_SerialNum^ 0x34795814); SetDlgItemText(IDC_EDIT_User,Serial);
偶尔也会用到。保留 一份吧。