一些VB的,不知有用否? http://www.99inf.net/Article/netjc/vbnetl/2005-05-24/21335.html获得硬盘序列号 Dim cmicWmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") Dim Uint32 As UInt32 For Each cmicWmiObj As ManagementObject In cmicWmi.Get Uint32 = cmicWmiObj("signature") Next TextBox1.Text = Uint32.ToString '获得CPU序列号 Dim Wmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_Processor") Dim Uint32 As String For Each WmiObj As ManagementObject In Wmi.Get Uint32 = WmiObj("ProcessorId") Next TextBox1.Text = Uint32 '获得硬盘总容量 Dim Wmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") Dim Uint64 As UInt64 For Each WmiObj As ManagementObject In Wmi.Get Uint64 = WmiObj("size") Next TextBox1.Text = Uint64.ToString 首先,引用System.Management;然后在代码中Imports System.Management;
Getting the MAC Address for an Ethernet Adapter You can use the Netbios function to get the Media Access Control (MAC) address for an ethernet adapter if your card is bound to NetBIOS. The following example uses the NCBASTAT command, providing an asterisk (*) as the name in the ncb_callname member of the NCB structure. Note The following code does not work reliably on Windows 95 or Windows 98. #include <windows.h> #include <wincon.h> #include <stdlib.h> #include <stdio.h> #include <time.h>typedef struct _ASTAT_ { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff [30]; }ASTAT, * PASTAT;ASTAT Adapter;void main (void) { NCB ncb; UCHAR uRetCode; char NetName[50]; memset( &ncb, 0, sizeof(ncb) ); ncb.ncb_command = NCBRESET; ncb.ncb_lana_num = 0; uRetCode = Netbios( &ncb ); printf( "The NCBRESET return code is: 0x%x \n", uRetCode ); memset( &ncb, 0, sizeof(ncb) ); ncb.ncb_command = NCBASTAT; ncb.ncb_lana_num = 0; strcpy( ncb.ncb_callname, "* " ); ncb.ncb_buffer = (char *) &Adapter; ncb.ncb_length = sizeof(Adapter); uRetCode = Netbios( &ncb ); printf( "The NCBASTAT return code is: 0x%x \n", uRetCode ); if ( uRetCode == 0 ) { printf( "The Ethernet Number is: %02x%02x%02x%02x%02x%02x\n", Adapter.adapt.adapter_address[0], Adapter.adapt.adapter_address[1], Adapter.adapt.adapter_address[2], Adapter.adapt.adapter_address[3], Adapter.adapt.adapter_address[4], Adapter.adapt.adapter_address[5] ); } }
或者参见 。NET 2003 帮助里的 platform Sdk : Ip HELPER 在索引里输入 getadaptersinfo 你可以从这里知道如何取 MAC 地址 硬盘的序列号 本人无能为力了
GetVolumeInformation中的第一个参数(好像是设置盘符名称的)我如果不指定(为空)也可以读出来一些东西,不过好像比指定盘符时的短一些,不知道不指定时读出的是什么?
http://www.99inf.net/Article/netjc/vbnetl/2005-05-24/21335.html获得硬盘序列号 Dim cmicWmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") Dim Uint32 As UInt32 For Each cmicWmiObj As ManagementObject In cmicWmi.Get Uint32 = cmicWmiObj("signature") Next TextBox1.Text = Uint32.ToString '获得CPU序列号 Dim Wmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_Processor") Dim Uint32 As String For Each WmiObj As ManagementObject In Wmi.Get Uint32 = WmiObj("ProcessorId") Next TextBox1.Text = Uint32 '获得硬盘总容量 Dim Wmi As New System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") Dim Uint64 As UInt64 For Each WmiObj As ManagementObject In Wmi.Get Uint64 = WmiObj("size") Next TextBox1.Text = Uint64.ToString 首先,引用System.Management;然后在代码中Imports System.Management;
#if defined(WIN32) || defined(__WIN32__)
#include <Iprtrmib.h>
#include <Iphlpapi.h> #pragma comment(lib, "Iphlpapi.lib")
#endifstring get_localhost_mac_addr()
{
string mac;#if defined(WIN32) || defined(__WIN32__) #ifdef IPRTRMGR_PID
PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter = NULL;
DWORD dwRetVal = 0; pAdapterInfo = (IP_ADAPTER_INFO*) malloc(sizeof(IP_ADAPTER_INFO));
ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO); if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW)
{
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO*) malloc(ulOutBufLen);
} if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR)
{
pAdapter = pAdapterInfo;
while (pAdapter)
{
if (pAdapter->AddressLength >= 6)
{
char szMAC[32];
sprintf(szMAC, "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X",
pAdapter->Address[0],
pAdapter->Address[1],
pAdapter->Address[2],
pAdapter->Address[3],
pAdapter->Address[4],
pAdapter->Address[5]);
mac = szMAC; break;
}
pAdapter = pAdapter->Next;
}
}
#endif#else #if 0 ::system("ifconfig eth0 | head -1 > mactmp.dat"); file_t f;
if (f.open_exist("mactmp.dat"))
{
char buf[256];
memset(buf, 0, sizeof(buf));
int len = f.read(buf, 256);
if (len)
{
char* pos = strstr(buf, "HWaddr");
if (pos) mac = (pos + 7);
}
} #else #if defined(PF_PACKET)
SOCKET s = socket(PF_PACKET, SOCK_RAW, 0);
#else
SOCKETs = socket(AF_INET, SOCK_PACKET, SOCK_PACKET);
#endif
char *ifname = "eth0"; struct ifreq if_hwaddr;
unsigned char *hwaddr = (unsigned char*)if_hwaddr.ifr_hwaddr.sa_data; strcpy(if_hwaddr.ifr_name, ifname);
if (IOCTLSOCKET(s, SIOCGIFHWADDR, &if_hwaddr) >= 0)
{
char str[32];
sprintf(str, "%2.2X:%2.2X:%2.2X:%2.2X:%2.2X:%2.2X", hwaddr[0], hwaddr[1],
hwaddr[2], hwaddr[3], hwaddr[4], hwaddr[5]);
mac = str;
} #endif
#endif return mac;
}
还有那个获取硬盘序列号的不对的
以上的方法你重装一遍系统就全不一样了
我曾做过类似的注册程序,不过你....
你可以baidu一下类似的情况~~~~~~~~~~~~~~~~~~
You can use the Netbios function to get the Media Access Control (MAC) address for an ethernet adapter if your card is bound to NetBIOS. The following example uses the NCBASTAT command, providing an asterisk (*) as the name in the ncb_callname member of the NCB structure. Note The following code does not work reliably on Windows 95 or Windows 98. #include <windows.h>
#include <wincon.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, * PASTAT;ASTAT Adapter;void main (void)
{
NCB ncb;
UCHAR uRetCode;
char NetName[50]; memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = 0; uRetCode = Netbios( &ncb );
printf( "The NCBRESET return code is: 0x%x \n", uRetCode ); memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = 0; strcpy( ncb.ncb_callname, "* " );
ncb.ncb_buffer = (char *) &Adapter;
ncb.ncb_length = sizeof(Adapter); uRetCode = Netbios( &ncb );
printf( "The NCBASTAT return code is: 0x%x \n", uRetCode );
if ( uRetCode == 0 )
{
printf( "The Ethernet Number is: %02x%02x%02x%02x%02x%02x\n",
Adapter.adapt.adapter_address[0],
Adapter.adapt.adapter_address[1],
Adapter.adapt.adapter_address[2],
Adapter.adapt.adapter_address[3],
Adapter.adapt.adapter_address[4],
Adapter.adapt.adapter_address[5] );
}
}
硬盘的序列号 本人无能为力了
GUID uuid;
CoCreateGuid(&uuid);
printf("%02X:%02X:%02X:%02X:%02X:%02X",uuid.Data4[2],uuid.Data4[3],uuid.Data4[4],uuid.Data4[5],uuid.Data4[6],uuid.Data4[7]);
但是你要试一下重装系统的问题