Q&A

  • [소스구함] CUP, BIOS의 시리얼번호나 Product ID를..
CUP랑 BIOS의 시리얼번호나 Product ID를 알구 싶은데 어떨게 해야 하나요...

CPU의 벤더는 구할수 있는데 고유의 시리얼번호는 없나요..?

또, BIOS의 날짜나 버전은 나오는데 시리얼은 어떻게 구하나요..

즉 CPU랑 BIOS의 고유의 번호를 체크하구 싶은데 소스나 팁이 있는분은

갈켜주세요..





1  COMMENTS
  • Profile
    김영대 1999.04.15 20:12
    > 이영일 wrote:

    > CUP랑 BIOS의 시리얼번호나 Product ID를 알구 싶은데 어떨게 해야 하나요...

    > CPU의 벤더는 구할수 있는데 고유의 시리얼번호는 없나요..?

    > 또, BIOS의 날짜나 버전은 나오는데 시리얼은 어떻게 구하나요..

    > 즉 CPU랑 BIOS의 고유의 번호를 체크하구 싶은데 소스나 팁이 있는분은

    > 갈켜주세요..

    >



    안녕하세요 김영대입니다



    대부분의 CPU 에는 serial number 가 없는걸로 알고 있습니다

    BIOS 에도 copyright, release date, version number 등등의 자료가 있습니다



    혹시 각 시스템의 유일한 식별자를 찾으신다면 제한적일수는 있지만

    HDD의 Volume Serial Number 를 사용하시거나 아니면

    Network 카드의 MAC address 를 사용해 보세요



    아래는 시스템 정보를 읽어오는 소스인데 참고해 보세요





    unit GetInfo;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Registry;



    type

    SystemInfoRecord = record

    VolumeName, // 디스크 볼륨명

    VolumeSerial, // 디스크 시리얼번호

    FileSystemName, // 파일구조

    Drives : shortstring;// 디스크명들

    ProcessorType : shortstring;// CPU 타입(MMX나 P-II는 안됨)

    Version, // 원도우 버전

    Plattform : shortstring;// 원도우 종류

    PlattId : DWORD; // 현 플랫폼 ID

    ComputerName, // 컴퓨터 이름

    FPU, // FPU 유무

    UserName, // 사용자 이름

    CompanyName, // 회사이름

    CDSerial : shortstring;// 원도우 시디 시리얼번호

    TotalPhys, // 총 메모리

    AvailPhys, // 이용할 수 있는 메모리

    TotalVirtual, // 총 가상메모리

    AvailVirtual, // 이용할 수 있는 가상메모리

    MemoryLoad : DWORD; // 메모리 적재율

    BiosDate, // 마더보더의 바이오스 날짜

    BiosName, // 마더보더의 바이오스 이름

    BiosVer, // 마더보더의 바이오스 버전

    BusType, // 버스타입

    CPU, // 바이오스에 나타난 CPU종류

    MachineType : shortstring;// 바이오스에 나타난 컴종류

    end;



    var

    SysInfoRec: SystemInfoRecord;



    function GetAllSystemInfo: SystemInfoRecord; stdcall;



    implementation



    var

    OSVerInfo: TOSVersionInfo;



    function GetRegStr(Key, St: string): string;

    begin

    with TRegistry.Create do

    try

    RootKey := HKEY_LOCAL_MACHINE;

    if OpenKey(Key, False) then result := ReadString(St);

    finally

    Free;

    end;

    end;



    procedure GetComputerName;

    var

    Computer : PChar;

    CSize : DWORD;

    begin

    CSize := MAX_COMPUTERNAME_LENGTH + 1;

    try

    GetMem( Computer, CSize );

    if Windows.GetComputerName( Computer, CSize ) then

    SysInfoRec.ComputerName := Computer;

    finally

    FreeMem( Computer );

    end;

    end;



    procedure GetVolumeInfo;

    var

    lpRootPathName : PChar;

    lpVolumeNameBuffer : PChar;

    nVolumeNameSize : DWORD;

    lpVolumeSerialNumber : DWORD;

    lpMaximumComponentLength : DWORD;

    lpFileSystemFlags : DWORD;

    lpFileSystemNameBuffer : PChar;

    nFileSystemNameSize : DWORD;

    begin

    try

    GetMem( lpVolumeNameBuffer, MAX_PATH + 1 );

    GetMem( lpFileSystemNameBuffer, MAX_PATH + 1 );



    nVolumeNameSize := MAX_PATH + 1;

    nFileSystemNameSize := MAX_PATH + 1;



    lpRootPathName := PChar( 'C:' );

    if Windows.GetVolumeInformation( lpRootPathName,

    lpVolumeNameBuffer,

    nVolumeNameSize,

    @lpVolumeSerialNumber,

    lpMaximumComponentLength,

    lpFileSystemFlags,

    lpFileSystemNameBuffer,

    nFileSystemNameSize ) then

    begin

    with SysInfoRec do begin

    VolumeName := lpVolumeNameBuffer;

    VolumeSerial := IntToHex(HiWord(lpVolumeSerialNumber), 4) + '-' +

    IntToHex(LoWord(lpVolumeSerialNumber), 4);

    FileSystemName := lpFileSystemNameBuffer;

    end;

    end;

    finally

    FreeMem( lpVolumeNameBuffer );

    FreeMem( lpFileSystemNameBuffer );

    end;

    end;



    procedure GetOSVersionInfo;



    function Plat(Pl: DWORD): string;

    begin

    case Pl of

    VER_PLATFORM_WIN32s: result := 'Windows 3.1';

    VER_PLATFORM_WIN32_WINDOWS: result := 'Windows 95';

    VER_PLATFORM_WIN32_NT: result := 'Windows NT';

    else result := '???';

    end;

    end;



    begin



    with OSVerInfo, SysInfoRec do begin

    dwOSVersionInfoSize := SizeOf(OSVerInfo);

    if GetVersionEx(OSVerInfo) then;

    Version := Format('%d.%d (%d.%s)',[dwMajorVersion, dwMinorVersion,

    (dwBuildNumber and $FFFF), szCSDVersion]);

    Plattform := Plat(dwPlatformId);

    PlattID := dwPlatformId;

    end;

    end;



    procedure GetDriveNames;

    var

    D1 : set of 0..25;

    D2 : integer;

    begin

    DWORD( D1 ) := Windows.GetLogicalDrives;

    with SysInfoRec do begin

    Drives := '';

    for D2 := 0 to 25 do

    if D2 in D1 then

    Drives := Drives + Chr( D2 + Ord( 'A' )) + ': ';

    end;

    end;



    procedure GetSystemInfo;

    var TmpStr: string;

    MProc: string;

    LocalSI: TSystemInfo;

    const

    PROCESSOR_INTEL_386 = 386;

    PROCESSOR_INTEL_486 = 486;

    PROCESSOR_INTEL_PENTIUM = 586;

    PROCESSOR_MIPS_R4000 = 4000;

    PROCESSOR_ALPHA_21064 = 21064;

    begin

    Windows.GetSystemInfo(LocalSI);



    with LocalSI, SysInfoRec do begin

    case dwProcessorType of

    PROCESSOR_INTEL_386 : ProcessorType := ' 386';

    PROCESSOR_INTEL_486 : ProcessorType := ' 486';

    PROCESSOR_INTEL_PENTIUM : ProcessorType := ' Pentium';

    PROCESSOR_MIPS_R4000 : ProcessorType := ' MIPS';

    PROCESSOR_ALPHA_21064 : ProcessorType := ' ALPHA';

    end;

    end;

    end;



    procedure MemoryInfo;

    var

    MemStatus: TMemoryStatus;

    begin

    MemStatus.dwLength := SizeOf(MemStatus);

    GlobalMemoryStatus(MemStatus);

    with SysInfoRec do begin

    TotalPhys := MemStatus.dwTotalPhys DIV 1024;

    AvailPhys := MemStatus.dwAvailPhys DIV 1024;

    TotalVirtual := MemStatus.dwTotalVirtual DIV 1024;

    AvailVirtual := MemStatus.dwAvailVirtual DIV 1024;

    MemoryLoad := MemStatus.dwMemoryLoad;

    end;

    end;



    procedure GetRegisterInfo;

    const

    FPPKey = 'hardwareDESCRIPTIONSystemFloatingPointProcessor';

    var

    CurVerKey : PChar;

    begin

    with SysInfoRec do begin

    case PlattID of

    VER_PLATFORM_WIN32_WINDOWS :

    CurVerKey := 'SOFTWAREMicrosoftWindowsCurrentVersion';

    VER_PLATFORM_WIN32_NT :

    CurVerKey := 'SOFTWAREMicrosoftWindows NTCurrentVersion';

    else CurVerKey := nil;

    end;



    with TRegistry.Create do

    try

    RootKey := HKEY_LOCAL_MACHINE;

    if OpenKey(FPPKey, False) then

    FPU := 'Yes'

    else FPU := 'No';

    finally

    Free;

    end;



    UserName := GetRegStr(CurVerKey,'RegisteredOwner');

    CompanyName := GetRegStr(CurVerKey,'RegisteredOrganization');

    if PlattID = VER_PLATFORM_WIN32_WINDOWS then

    CDSerial := GetRegStr(CurVerKey,'ProductID');



    end;

    end;



    procedure GetBiosInfo;

    begin

    with SysInfoRec do begin

    BiosDate := GetRegStr('EnumRoot*PNP0C01
    • 이정석
    • 1999.04.16 00:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.16 00:56
      이정석 wrote: > 안녕하십니까? > ActvieX Form으로 웹에서 데이타베이스를 사용하는 프로그램을 > 만...
    • 고부성
    • 1999.04.16 00:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.16 01:04
      음.. 두가지 가능성이 있습니다. 먼저 첫째, Path가 잘못되어있을 경우이죠. 실제로 C:sample.txt 에 저...
    • Faster
    • 1999.04.15 22:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.04.16 18:42
      > Faster wrote: > 출력물(QuickReport)에 대해 자세히 알고 싶습니다. > > 델파이 책중에 QuickReport...
    • 남윤혁
    • 1999.04.15 22:13
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 남윤혁
      1999.04.16 02:34
      -.-;; 무슨말인지 잘모르겠네요... 다시 정리해서 올립니다. 아래의 함수는 그리기 전용함수입니다. ...
    • 남윤혁
      1999.04.16 00:37
      다시 질문입니다. 제가 XPI:= GetDeviceCaps( Canvas.Handle, LOGPIXELSX ); YPI:= GetDeviceCaps( ...
    • 이정욱
      1999.04.16 01:06
      화면 출력 후 XPI := GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX); YPI := GetDeviceCaps(Printe...
    • 안치봉
      1999.04.15 23:28
      남윤혁 wrote: > 으아... 미치겠습니다. > > 인쇄를 하기 위해서 > > 매핑모드 바꾼거 까지는 좋았...
    • 이영일
    • 1999.04.15 19:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.04.15 20:12
      > 이영일 wrote: > CUP랑 BIOS의 시리얼번호나 Product ID를 알구 싶은데 어떨게 해야 하나요... > CPU의...
    • 이동화
    • 1999.04.15 08:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.04.15 09:20
      이동화 wrote: > 안녕하세요! > 프린터에대해서 궁금한게 있습니다. 아니 지금 되지가 않습니다. > 프린...
    • 이동화
      1999.04.15 09:39
      김영해 wrote: > 이동화 wrote: > > 안녕하세요! > > 프린터에대해서 궁금한게 있습니다. 아니 지금 되...
    • 김영해
    • 1999.04.15 08:49
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.15 10:21
      아래 작업전환을 막는것이 있습니다. 이 코드는 나이렉스의 팁 게시판에서 가져왔습니다. var Form1:...
    • 김영해
      1999.04.17 07:48
      감사합니다.이정욱님 많은 도움이 되었습니다.
    • 이순희
    • 1999.04.15 08:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • bluepine
      1999.04.17 01:18
      이순희 wrote: > 안녕하세요... > 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. > 두개...
    • 글쎄요.
      1999.04.15 19:02
      이순희 wrote: > 안녕하세요... > 테이블에 시작시간과 끝시간에 대한 두개의 필드가 있습니다. > 두개...
    • 이호선
    • 1999.04.15 05:08
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.04.20 03:56
      이호선 wrote: > 안녕하세요.. > 일반 control(예: Panel)에 이미지를 실을려하는데 > 어떻게해야 할지...
    • 안치봉
      1999.04.15 06:12
      이호선 wrote: > 안녕하세요.. > 일반 control(예: Panel)에 이미지를 실을려하는데 > 어떻게해야 할지...
    • 신인재
      1999.04.15 06:22
      안치봉 wrote: > 이호선 wrote: > > 안녕하세요.. > > 일반 control(예: Panel)에 이미지를 실을려하는...
    • 이슬
    • 1999.04.15 03:34
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.04.17 08:00
      이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
    • 신호성
      1999.04.16 01:36
      > 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다. > 근데, DBGrid에...
    • 박종모
      1999.04.15 04:44
      이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
    • 글쎄요
      1999.04.15 05:41
      추가로 답변합니다. 2번째 건데 답변이 잘 못된 것 같아요. 가장 좋은 방법은 DBGRID 대신에 STRINGGRID...
    • 김정수
    • 1999.04.15 01:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.15 02:44
      김정수 wrote: > 음...mci관련 프로그램을 짜다가... 이런 메세지가 뜨더군요... > Could not create out...
    • Faster
    • 1999.04.15 01:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 아무개
      1999.04.15 04:49
      안녕하세요? 델파이 Q&A는 최소한 노력을 하는 사람들이 배워가는 곳입니다. 문제를 내고, 답을 맞추는 ...
    • 이정욱
      1999.04.15 01:49
      여러가지 방법이 있습니다. 각 콘트롤의 Tag를 사용하는 방법이 있구요.. 그냥 Name을 가지고 사용하는 ...
    • 이슬
    • 1999.04.14 23:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.04.14 23:58
      이슬님 저 구창민입니다. 메일 보내드렸는데 또 질문 올리셨군요. 못 받으셨다면 이글 다시 보시기 바래...
    • 보라뚱땡이
      1999.04.15 01:45
      이 사이트 자료실 54번 항목에 500개의 버튼이미지가 있는데요..... 그거말구 BitBtn에 사이즈상 Icon을...
    • 안치봉
      1999.04.14 21:18
      하재희 wrote: > 안녕하십니까! > 저는 현재 델파이로 프로젝트를 수행하고 있는 하재희라고 합니다. > ...
    • 이진수
    • 1999.04.14 19:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.14 21:01
      이진수 wrote: > microsoft Active Movie 2.0을 install 시키고 임의의 구간을 입력 > 받아서 재생하려고...
    • 이순희
    • 1999.04.14 06:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.04.14 19:39
      이순희 wrote: > 자꾸 질문해서 죄송합니다.. > 델파이를 많이 사용 안해봐서... 잘 모르는게 넘 많네요....