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.06.23 02:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 모승열
      1999.06.29 11:26
      최선기 께서 말씀하시기를... > 아래 질문을 했는데.. 혹시나 이해 못 하실까봐 다시 합니다. > 제 질문...
    • 남윤혁
    • 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: > 으아... 미치겠습니다. > > 인쇄를 하기 위해서 > > 매핑모드 바꾼거 까지는 좋았...
    • Faster
    • 1999.04.15 22:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.04.16 18:42
      > Faster wrote: > 출력물(QuickReport)에 대해 자세히 알고 싶습니다. > > 델파이 책중에 QuickReport...
    • 모승열
      1999.06.29 11:24
      신현숙 께서 말씀하시기를... > 안녕하세요.. > 질문이 있어서리~~ > ^^;; > > Mdi 폼에 mdi child ...
    • nuki
    • 1999.06.23 00:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 유수
      1999.06.23 00:41
      OnDrawCell 이벤트에서 직접 코딩을 해 주시면 됩니다. 이경우 현재 그려질 셀의 Canvas를 얻을...
    • 남윤혁
    • 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: > 으아... 미치겠습니다. > > 인쇄를 하기 위해서 > > 매핑모드 바꾼거 까지는 좋았...
    • bds
    • 1999.06.22 23:47
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 유수
      1999.06.23 00:36
      키필드에 값이 지정되지 않아서 나는 에러입니다. 해당 테이블의 프라이머리 키필드는 반드시 값이 지...
    • ppyp
    • 1999.06.22 23:13
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이영일
      1999.04.15 19:10
      CUP랑 BIOS의 시리얼번호나 Product ID를 알구 싶은데 어떨게 해야 하나요... CPU의 벤더는 구할수 있는데...
    • 김영대
      1999.04.15 20:12
      > 이영일 wrote: > CUP랑 BIOS의 시리얼번호나 Product ID를 알구 싶은데 어떨게 해야 하나요... > CPU의...
    • 이영일
    • 1999.04.15 19:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      1999.04.15 20:12
      > 이영일 wrote: > CUP랑 BIOS의 시리얼번호나 Product ID를 알구 싶은데 어떨게 해야 하나요... > CPU의...
    • bds
    • 1999.06.22 21:08
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최석기
      1999.06.22 21:30
      bds 께서 말씀하시기를... > 무더운 여름에 고생많으십니다. > DBMemo로 입력하려고 합니다. > DBMemo...
    • 이순희
    • 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 08:49
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 손용석
      1999.06.22 19:58
      이제 델파이를 배우기 시작한 초보생인데 어디엔가 델파이 한글 도움말이 있다고 들었는데 아무리...
    • 이정욱
      1999.04.15 10:21
      아래 작업전환을 막는것이 있습니다. 이 코드는 나이렉스의 팁 게시판에서 가져왔습니다. var Form1:...
    • 김영해
      1999.04.17 07:48
      감사합니다.이정욱님 많은 도움이 되었습니다.
    • 이동화
    • 1999.04.15 08:56
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 배재민
      1999.06.22 19:36
      엑세스를 이용하여 프로그램을 만들었습니다. 그리고 Delphi 4.0 CD에 있는 인스톨 쉴드 2.02를 이용하...
    • 김영해
      1999.04.15 09:20
      이동화 wrote: > 안녕하세요! > 프린터에대해서 궁금한게 있습니다. 아니 지금 되지가 않습니다. > 프린...
    • 김경수
      1999.06.22 19:57
      안녕하세요. 저도 그런적이 있었거든요. 근데 실제 설치할 컴퓨터(저같은경우 win95)에 access가 설치되...
    • 이동화
      1999.04.15 09:39
      김영해 wrote: > 이동화 wrote: > > 안녕하세요! > > 프린터에대해서 궁금한게 있습니다. 아니 지금 되...
    • 진은정
      1999.06.22 19:54
      InstallSheild인지 BDE인지, 하여간 DAO랑 잘 어울리질 못하더군요, 저도 이것때문에 무척 고생을 했...
    • 1999.06.22 20:13
      강동연 께서 말씀하시기를... > 고수님들 부탁드립니다. > > 테이블 리스트의 내용을 파일에 저장할때 ...