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.17 00:42
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.17 01:17
      문창완 wrote: > 네모나 이미지의 각꼭지를 적당하게 > 라운드 처리하고싶습니다. > 도와주세요... > ...
    • 문창완
      1999.04.17 01:49
      안치봉 wrote: > 문창완 wrote: > > 이미지의 각꼭지를 적당하게 > > 라운드 처리하고싶습니다. > > ...
    • 안치봉
      1999.04.17 02:14
      문창완 wrote: > 안치봉 wrote: > > 문창완 wrote: > > > 이미지의 각꼭지를 적당하게 > > > 라운드 ...
    • 문창완
      1999.04.17 03:07
      정말 감사합니다... 조금만 복잡한 글만나요면... 프로그래밍 하는 사람으로써 세계화에 뒤쳐지지않을려...
    • 이상훈
    • 1999.04.16 23:25
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.17 02:38
      DBProgressBar라는것은 기본 컴포넌트가 아닌듯 싶습니다. 제 델파이에는 그런것이 없네요..쩝.. 혹시 숨...
    • 이상훈
      1999.04.17 02:47
      이정욱 wrote: > DBProgressBar라는것은 기본 컴포넌트가 아닌듯 싶습니다. > 제 델파이에는 그런것이 없...
    • 이정욱
      1999.04.17 04:46
      네.. 받아서 봤습니다. 쩝.. 안에 Help와 Demo.. 모두가 있네요... 그것을 참고하시면 잘 아실 수 있을것...
    • 김정선
    • 1999.04.16 22:54
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      1999.04.17 07:38
      김정선 wrote: > 저두 같은 문제가 있었어요.. 아시는 분 꼭좀 가르쳐 주세요 > > 전 델파이4.0 오라클...
    • 이정욱
      1999.04.17 02:28
      인스톨쉴드를 너무 믿으면 약간 문제가 있습니다. 델파이 버전에서 BDE포함시 약간의 버그가 있다고 발표...
    • 이정욱
      1999.04.17 02:36
      컴포넌트를 찾는 방법은 델파이 링커에 가보시면 델파이 수퍼페이지라는 곳이 있습니다. 그곳에는 정말 엄...
    • 하늘
    • 1999.04.16 20:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.17 00:47
      글쎄요... 광고/홍보란에 한번 써보세요. 하늘 wrote: > 안녕하세요... > 델파이로 만든 가계부 프...
    • 이호선
    • 1999.04.16 18:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.16 18:39
      이호선 wrote: > 안녕하세요.. > 현재 화면모드가 800*600모드의 화면에서 1024*768모드로 변환하였을때 ...
    • 이호선
    • 1999.04.16 18:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 안치봉
      1999.04.16 18:35
      이호선 wrote: > 안녕하세요. > 좋은 아침입니다. > image component를 form크기에 맞추어 보여 줄려면 ...
    • 구창민
      1999.04.16 07:33
      이순희 wrote: > 안녕하세요... 또 질문 올리네요.. > 저번 답변 고마웠습니다.. 그런데.. 근본적인 문제...
    • bluepine
      1999.04.17 01:23
      구창민 wrote: > 이순희 wrote: > > 안녕하세요... 또 질문 올리네요.. > > 저번 답변 고마웠습니다.. ...
    • 엠마
    • 1999.04.16 05:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.04.16 06:51
      엠마 wrote: > 먼저 > 안녕하세요 게시판이 너무 좋아졌어요... > 검색하기가 너무 편해요... 추카합니...
    • 이호선
    • 1999.04.16 04:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.04.16 05:43
      캡쳐 이외의 방법은 제 생각에는 없습니다. 만약 가능성이 있다면 파일로 인쇄를 한 후 그것을 가지고 ...
    • 정남용
    • 1999.04.16 01:29
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김정선
      1999.04.23 00:51
      저두 같은 문제로 올렸는데 고맙게도 web@ns.nilex.co.kr라는 분이 메일을 보내왔더라구요.. Autoexec.bat...
    • 이정욱
      1999.04.17 02:26
      저도 역시 이런 문제 때문에 고생을 한적이 있었습니다. 전 엑세스 DB를 사용했을때 문제였죠. 그래서 결...
    • 김정선
      1999.04.16 22:56
      저두 같은 문제가 있었어요.. 아시는 분 꼭좀 가르쳐 주세요 전 델파이4.0 오라클 8.0.5버젼을 가지고 ...
    • 이정욱
      1999.04.16 02:17
      아무래도 케이블을 그냥 두갈래로 뽑으신것 같군요. 그렇게 하면 아마도 제데로 안될것 같네요... 그것보...
    • 화랑
      1999.04.16 03:06
      답변 감사합니다.. 문제는 제가 그 서버를 건드릴수가 없습니다. 지금 현재 나와있는 것은 프린터로 가...
    • 이정욱
      1999.04.16 05:08
      프린터포트를 제어하는것은 문제가 없습니다. 그것을 지원하는 컴포넌트를 본적이 있는데.... 아마도 찾아...
    • 화랑
      1999.04.17 18:11
      매번 감사합니다.. 저기 한가지만 더 하고 싶은데.. 프린트는 앱슨을 쓰거든요.. 혹시 서로 전달되는 ...
    • 이정석
    • 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의...