社区
硬件/系统
帖子详情
谁能给个获取主板,硬盘及CPUID的方法?
ynstudio
2003-06-20 09:19:30
加精
谁能给个获取主板,硬盘及CPUID的方法?多谢,分不够还可以再加。
翻过前面的文章,没有找到什么合适的,关键是要所有操作系统都能安全使用的。98,ME,NT,2K,XP。不知道哪位大侠能帮忙。谢了。
...全文
86
9
打赏
收藏
谁能给个获取主板,硬盘及CPUID的方法?
谁能给个获取主板,硬盘及CPUID的方法?多谢,分不够还可以再加。 翻过前面的文章,没有找到什么合适的,关键是要所有操作系统都能安全使用的。98,ME,NT,2K,XP。不知道哪位大侠能帮忙。谢了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ynstudio
2003-06-24
打赏
举报
回复
Skt32(荒城之月) :你给的第一个例子,我早就调试过了,里面的接口错误也修正了,但是XP下,有些机器得不到ID。后面两个我还没有调试,等调试后再告诉你结果。
xiaohedou
2003-06-24
打赏
举报
回复
学习
Skt32
2003-06-23
打赏
举报
回复
DWORD CComputerInfo::GetMainboardBIOSIdentification(LPSTR lpbuf,BYTE *buflen)
{
DWORD retvalue=RET_BIOS_FAILED_CHECK;
DWORD Add=0;
HANDLE physmem;
DWORD dwPlatformId=dllGetPlatformId();
if(m_bBIOSCheckSuccess){
retvalue=(DWORD)strlen(m_pBIOSData);
goto RETURN_DATA;
}
if(dwPlatformId==VER_PLATFORM_WIN32_NT){//NT/2k
UNICODE_STRING physmemString;
OBJECT_ATTRIBUTES attributes;
WCHAR physmemName[] = L"\\Device\\PhysicalMemory";
NTSTATUS ntStatus;
HMODULE hNTDLL=::GetModuleHandle(TEXT("NTDLL.DLL"));//ntdll.dll must be loaded,it is OK.
ZwOpenSection=(TZwOpenSection)GetProcAddress(hNTDLL,"ZwOpenSection");
ZwMapViewOfSection=(TZwMapViewOfSection)GetProcAddress(hNTDLL,"ZwMapViewOfSection");
ZwUnmapViewOfSection=(TZwUnmapViewOfSection)GetProcAddress(hNTDLL,"ZwUnmapViewOfSection");
RtlInitUnicodeString=(TRtlInitUnicodeString)GetProcAddress(hNTDLL,"RtlInitUnicodeString");
RtlInitUnicodeString( &physmemString, physmemName );
InitializeObjectAttributes( &attributes,
&physmemString,
OBJ_CASE_INSENSITIVE,
NULL,
NULL
);
ntStatus = ZwOpenSection( &physmem,
SECTION_MAP_READ,
&attributes
);
if( !NT_SUCCESS( ntStatus ))
return retvalue;
DWORD PAdd = 0xF0000;
DWORD LPAdd = 0xFFFF;
if(!biosMapView(physmem,&PAdd,&LPAdd,&Add))
return retvalue;
}
if(!((retvalue=biosCheckAward(Add)) > 0 || \
(retvalue=biosCheckPhoenix(Add)) > 0 || \
(retvalue=biosCheckAMI(Add)) > 0)){//No supported
m_bBIOSCheckSuccess=_BIOS_CHECK_UNKNOWN;
if(dwPlatformId==VER_PLATFORM_WIN32_NT)
ZwUnmapViewOfSection((HANDLE)-1,(PVOID)Add);
return RET_BIOS_UNKNOWN;
}
if(dwPlatformId==VER_PLATFORM_WIN32_NT)
ZwUnmapViewOfSection((HANDLE)-1,(PVOID)Add);
m_bBIOSCheckSuccess=_BIOS_CHECK_SUCCESS;
RETURN_DATA:
if(lpbuf!=NULL){
if(*buflen > retvalue){
__try{
strcpy(lpbuf,m_pBIOSData);
}
__except(1)
{
retvalue=RET_BIOS_INALID_BUFFER;
}
}
else
{
*buflen=(BYTE)(retvalue+1);
retvalue=RET_BIOS_INSUFFICIENT_LEN;
}
}
return retvalue;
}
BYTE CComputerInfo::biosCheckAward(DWORD Add)
{
size_t nlen;
if(dllGetPlatformId()==VER_PLATFORM_WIN32_NT)//NT/2k
Add+=0xEC71;
else
Add=0xFEC71;
//Validate
memcpy(m_pBIOSData,(LPBYTE)Add,MAX_BIOS_IDENTIFICATION);
m_pBIOSData[MAX_BIOS_IDENTIFICATION+1]='\0';
if((nlen=strlen(m_pBIOSData)) < MAX_BIOS_IDENTIFICATION && nlen > 0){
//Example
//AWard:07/08/2002-i845G-ITE8712-JF69VD0CC-00
// 10/10/98-xxx……
//Phoenix-Award:03/12/2002-sis645-p4s333
if(m_pBIOSData[2]=='/' && m_pBIOSData[5]=='/'){
CHAR *p=m_pBIOSData;
while(*p){
if(*p < 0x20 || *p > 0x71)
goto NOT_AWARD;
p++;
}
return (BYTE)nlen;
}
}
NOT_AWARD:
return 0;
}
BYTE CComputerInfo::biosCheckPhoenix(DWORD Add)
{
size_t nlen;
if(dllGetPlatformId()==VER_PLATFORM_WIN32_NT)//NT/2k
Add+=0x6577;
else
Add=0xF6577;
//Validate
memcpy(m_pBIOSData,(LPBYTE)Add,MAX_BIOS_IDENTIFICATION);
m_pBIOSData[MAX_BIOS_IDENTIFICATION+1]='\0';
if((nlen=strlen(m_pBIOSData)) < MAX_BIOS_IDENTIFICATION && nlen > 0){
//Example
//Phoenix:NITELT0.86B.0044.P11.9910111055
if(m_pBIOSData[7]=='.' && m_pBIOSData[11]=='.'){
CHAR *p=m_pBIOSData;
while(*p){
if(*p < 0x20 || *p > 0x71)
goto NOT_PHOENIX;
p++;
}
return (BYTE)nlen;
}
}
NOT_PHOENIX:
return 0;
}
BYTE CComputerInfo::biosCheckAMI(DWORD Add)
{
size_t nlen;
if(dllGetPlatformId()==VER_PLATFORM_WIN32_NT)//NT/2k
Add+=0xF478;
else
Add=0xFF478;
//Validate
memcpy(m_pBIOSData,(LPBYTE)Add,MAX_BIOS_IDENTIFICATION);
m_pBIOSData[MAX_BIOS_IDENTIFICATION+1]='\0';
if((nlen=strlen(m_pBIOSData)) < MAX_BIOS_IDENTIFICATION && nlen > 0){
//Example
//AMI:51-2300-000000-00101111-030199-
if(m_pBIOSData[2]=='-' && m_pBIOSData[7]=='-'){
CHAR *p=m_pBIOSData;
while(*p){
if(*p < 0x20 || *p > 0x71)
goto NOT_AMI;
p++;
}
return (BYTE)nlen;
}
}
NOT_AMI:
return 0;
}
BOOL CComputerInfo::biosMapView( HANDLE hPMemory,DWORD *dwPAddress,DWORD *dwLength,DWORD *dwVAddress)
{
NTSTATUS Status;
PHYSICAL_ADDRESS ViewBaseAddress;
*dwVAddress = 0;
ViewBaseAddress.QuadPart = (ULONGLONG) (*dwPAddress);
Status = ZwMapViewOfSection ( hPMemory,
(HANDLE) -1,
(PVOID*)dwVAddress,
0,
*dwLength,
&ViewBaseAddress,
dwLength,
ViewShare,
0,
PAGE_READONLY
);
return NT_SUCCESS( Status);
}
调吧
Skt32
2003-06-23
打赏
举报
回复
CString GetCPUID()
{
CString CPUID;
unsigned long s1,s2;
unsigned char vendor_id[]="------------";
char sel;
sel='1';
CString VernderID;
CString MyCpuID,CPUID1,CPUID2;
switch(sel)
{
case '1':
__asm{
xor eax,eax
cpuid
mov dword ptr vendor_id,ebx
mov dword ptr vendor_id[+4],edx
mov dword ptr vendor_id[+8],ecx
}
VernderID.Format("%s-",vendor_id);
__asm{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
CPUID1.Format("%08X%08X",s1,s2);
__asm{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
CPUID2.Format("%08X%08X",s1,s2);
break;
case '2':
{
__asm{
mov ecx,119h
rdmsr
or eax,00200000h
wrmsr
}
}
printf("CPU id is disabled.\n");
break;
}
MyCpuID = CPUID1+CPUID2;
CPUID = MyCpuID;
return CPUID;
}
Skt32
2003-06-23
打赏
举报
回复
读硬盘序列号控件dll版(源码/例子)(1.00)ftp://211.100.8.153/download/67/7349_disksndll.zip
ynstudio
2003-06-20
打赏
举报
回复
zhang_zhibin(阿笨猫),不好意思,刚才我多做了一些改动,所以得到的是一串数字而非厂商。对于厂商及主频好象是没用的吧?不能用来唯一标识一台机器。
ynstudio
2003-06-20
打赏
举报
回复
zhang_zhibin(阿笨猫),你好,前面获得的nCPUName是不是就是CPU的ID好呢?是否现在所有的CPU都能得到这样一个ID?多谢。
zhang_zhibin
2003-06-20
打赏
举报
回复
int nCPUName[ 20 ] = { 0 };
_asm
{
mov eax, 0
cpuid
mov nCPUName[ 0 ], ebx
mov nCPUName[ 4 ], edx
mov nCPUName[ 8 ], ecx
}
return ( TCHAR* )nCPUName;
int nTime [ 2 ];
int nCPUClock;
_asm
{
rdtsc
mov nTime[ 0 ], edx
mov nTime[ 1 ], eax
}
Sleep( 1000 );
_asm
{
rdtsc
sub eax, nTime[ 1 ]
sub edx, nTime[ 0 ]
mov nCPUClock, eax
}
CString str;
str.Format( "%dMHz", nCPUClock / 1000000 );
return str;
CPU的生产厂和主频
NowCan
2003-06-20
打赏
举报
回复
http://nowcan.yeah.net
有些资料,关于bios序列号的。
c语言
获取
CPU
序列号(
CPU
ID
)
硬盘
序列号 (vs2010工程)支持64位编译
获取
CPU
序列号
硬盘
序列号 vs2010工程 支持64位
获取
CPU
序列号、
硬盘
号、
主板
号
获取
CPU
序列号、
硬盘
号、
主板
号,编译可用
vb.net
获取
cpu
ID
网卡地址
主板
id
硬盘
id
内存大小 电脑名称信息
亲测可用,
获取
主板
,
硬盘
,
CPU
,网卡地址等序号,另外还可以
获取
内存大小,系统登录用户名称,电脑的计算机名称。每个按钮一个功能,信息现在文本框内。源码直接可用,编写软件vb.net 2010 适合新手。
获取
电脑信息(磁盘容量,Mac地址,
Cpu
ID
,
主板
ID
等)
C# WinForm,
获取
磁盘容量,Mac地址,
Cpu
ID
,
主板
ID
,当前登录用户名,计算机名,桌面路径(software/microsoft/windows/currentversion/explorer/shell folders 注册表该路径下的相关信息)等、三层架构、单列,可供初学者参考。源码思路清晰,中文注释详尽,可运行调试。
Default.rar_
CPU
卡指令_VC++
主板
ID
_vc
主板
号_
主板
序列号_
获取
硬盘
型号
[
CPU
ID
.rar] -
获取
CPU
信息/
ID
号 [
CPU
ID
123.rar] - 编程高手 讨论 [GetNo.rar] -
获取
硬盘
序列号。可以利用在软件保护等模块中。自由下载无需帐号。 [测试
CPU
的程序.zip] - 测试
CPU
程序,可以读取
CPU
的各种比较详细的信息。 [Get
CPU
Info.zip] - 用VC
获取
CPU
的厂家信息,主频,
ID
。 [SDcardPROTLPCB.rar] - SD卡的PROTEL PCB封装,适合于作电路板用 [
CPU
信息查询演示.rar] -
CPU
信息查询演示.如何
获取
CPU
名称,标识、制造商名称、主频、个数等。 [windows
CPU
id
.rar] -
获取
CPU
ID
,可判断
CPU
型号和支持的指令集 [
CPU
info一.zip] -
获取
CPU
信息。 [Get_
ID
.rar] - 得到电脑的
硬盘
序列号与
CPU
的识别号,可以用来绑定电脑
硬件/系统
2,640
社区成员
17,239
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章