如何读出硬盘序列号?如何读出网址MAC地址,如何读出CPU ID,请用VC实现。谢了。老大们 ( 05-09)

standout 2002-05-13 06:02:41
如何读出硬盘序列号?如何读出网址MAC地址,如何读出CPU ID,请用VC实现。谢了。老大们 ( 05-09)
...全文
53 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxk 2002-05-13
  • 打赏
  • 举报
回复
http://www.5xsoft.com/data/200109/1108393101.htm
west_wood 2002-05-13
  • 打赏
  • 举报
回复
GetVolumeInformation()
只能获得软系列号,它可以用硬盘克隆软件克隆的
west_wood 2002-05-13
  • 打赏
  • 举报
回复
其实没有好的方法可以得到CPU ID的,好象INTEL关掉的CPUID的功能!
west_wood 2002-05-13
  • 打赏
  • 举报
回复
masterz() :
硬盘ID(硬件ID)的程序有在2000下有问题,运行会出错
CPUID程序是没有用的,所有机器都一样,CPUID的指令是不能得到CPUID的。
wuxq 2002-05-13
  • 打赏
  • 举报
回复
gz
xiaowu_li 2002-05-13
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/topic/489/489705.xml?temp=.6313898
HighTech 2002-05-13
  • 打赏
  • 举报
回复
up
dyw 2002-05-13
  • 打赏
  • 举报
回复
up
Thumb168 2002-05-13
  • 打赏
  • 举报
回复
请问这个程序可以在NT下运行吗?
wolf721 2002-05-13
  • 打赏
  • 举报
回复
硬盘序列号可用函数:

GetVolumeInformation()



关于CPU的代码:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

switch (message)
{
case WM_CREATE:
__asm{ //存于变量time中.
rdtsc
mov ecx,offset time
mov [ecx+0],edx
mov [ecx+4],eax
}
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
__asm{
mov eax,0
cpuid

mov mycpuid[0],ebx
mov mycpuid[4],edx
mov mycpuid[8],ecx
}

sprintf(zzz,"本机器CPU生产厂家为%s",mycpuid);
MessageBox(hWnd,zzz,"测试结果如下:",MB_OK);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_TIMER:
if(flag==1){
__asm{
rdtsc
mov ebx,offset time
sub eax,[ebx+4]
sbb edx,[ebx+0]
mov ecx,1000000
div ecx
mov cpuclock,eax
}
flag=0;
}
sprintf(zzz,"本机器CPU主频是: %d MHZ",cpuclock);
TextOut(GetDC(hWnd),200,200,zzz,24);
break;

default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
masterz 2002-05-13
  • 打赏
  • 举报
回复
http://www.codeguru.com/network/GetMAC.html
Three ways to get your MAC address.
masterz 2002-05-13
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <conio.h>

int main(int argc,char **argv)
{
unsigned long s1,s2;
unsigned char vendor_id[]="------------";
char sel;
printf("Select the function:\n1-------Read CPU id.\n2-------Disable CPU id.\n");
sel=getch();
switch(sel)
{
case '1':
asm xor eax,eax
asm cpuid
asm mov dword ptr vendor_id,ebx
asm mov dword ptr vendor_id[+4],edx
asm mov dword ptr vendor_id[+8],ecx
printf("%s-",vendor_id);
asm mov eax,01h
asm xor edx,edx
asm cpuid
asm mov s1,edx
asm mov s2,eax
printf("%08X\n%08X-",s1,s2);
asm mov eax,03h
asm xor ecx,ecx
asm xor edx,edx
asm cpuid
asm mov s1,edx
asm mov s2,ecx
printf("%08X-%08X\n",s1,s2);
break;
case '2':
asm{
mov ecx,119h
rdmsr
or eax,00200000h
wrmsr
}
printf("CPU id is disabled.\n");
break;
}
return 0;
}
masterz 2002-05-13
  • 打赏
  • 举报
回复
//////////////////////////////////////////////////////////////
//Get Harddisk serial number
/////////////////////////////////////////////////////////////
#include <windows.h>
#include <stdio.h>

WORD pw[256];
static DWORD idt, int_idt;
static DWORD Base;
static WORD Entry;
#pragma warning (disable:4035)

static int inp(WORD rdx)
{
_asm xor eax, eax
_asm mov dx, rdx
_asm in al, dx
}

static WORD inpw(WORD rdx)
{
_asm xor eax, eax
_asm mov dx, rdx
_asm in ax, dx
}

static void outp(WORD rdx, int ral)
{
_asm mov dx, rdx
_asm mov eax, ral
_asm out dx, al
}
static int WaitIde()
{
int al;
while ((al=inp(0x1F7))>=0x80) ;
return al;
}
static void ReadIDE()
{
int al;
int i;
WaitIde();
outp(0x1F6,0xA0);
al = WaitIde();
if ((al&0x50)!=0x50) return;
outp(0x1F6,0xA0);
outp(0x1F7,0xEC);
al = WaitIde();
if ((al&0x58)!=0x58) return;
for (i=0;i<256;i++) {
pw[i] = inpw(0x1F0);
}
}
static void __declspec( naked ) NowInRing0()
{
_asm {
push ebp
mov ebp,esp
call ReadIDE
cli
mov ebx, int_idt
mov ax, Entry
mov word ptr [ebx-4], ax
mov eax, Base
shr eax, 16
mov [ebx+2], ax
sti
leave
iretd
}
}
void GetIDEInfo()
{
DWORD dwExcept;
dwExcept = (DWORD)NowInRing0;
_asm {
mov eax, fs:[0]
push eax
sidt [esp-02h]
pop ebx
mov idt, ebx
add ebx, 0x1C
mov int_idt, ebx
mov eax, [ebx]
mov [Base], eax
mov ax, [ebx-4]
mov [Entry], ax
cli
mov esi, dwExcept
push esi
mov [ebx-4], si
shr esi, 16
mov [ebx+2], si
pop esi
sti
int 3
}
}
main()
{
char s[80];
register i,j;
GetIDEInfo();
for (i=0,j=0;i<10;i++) {
s[j++]=pw[10+i]>>8;
s[j++]=pw[10+i]&0xFF;
}
s[j] = 0;
printf("Serial=%s\n", s);
return 0;
}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧