Q&A

  • 내용의 시스템정보와 레지스트리 읽어오는 것좀 알려주세요
책과 게시판을 뒤져봤는데 생각보다 자료를 못찾겠어서요

아래의 시스템 정보를 알고 싶습니다.(컴퓨터이름과 사용자이름은 찾았는데 다른건 못찾겠네요.)
컴퓨터이름
사용자이름
작업그룹
IP ADDRESS
ETHERNET ADDRESS (MAC ADDRESS)
CPU
RAM
운영체제버전
그외 시스템관련 정보

레지스트리 값을 읽어오는데요
해당 디렉토리(디렉토리라고해야하나)까지들어가서 특정값은 가져오겠는데요
특정 디렉아래에 있는 하부 디렉토리의 목록을 가져오고 싶습니다.
예를 들면 설치된 소프트웨어 정보를 가져오려고
softwaremicrosoftwindowscurrentversionuninstall
아래에 설치된 소프트웨어의 폴더들 목록을 가져오고싶습니다.
에구... 모르니까 검색을나름데로 해봐도 못찾겠네요

답변부탁드려요
2  COMMENTS
  • Profile
    장태원 2003.08.14 08:27
    에허...windows.pas 에 있는 부분과..여러가지 소스를 가지고 이거 저거
    주서 모앗는데..더이상 귀찮아서..그럼즐..

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, registry;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
        procedure OpenRegistry(aReadOnly: Boolean);
        procedure SetRegistryRootKey(aRootKey: HKEY);
        function  OpenRegistrySubKey(const aSubKey: string): Boolean;
        procedure CloseRegistrySubKey;
      private
        FRegisteredOwner : String;
        FRegistry: TRegistry;
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;
    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    var

      registry : TRegistry;
      s: string;
      sys: TSystemTime;
      os: _OSVERSIONINFOA;
      mstat: TMemoryStatus;
      si: TSystemInfo;
      FCSDVersion,FRegisteredCompany,FProductID,FProductName :String;
      FBuildNumber,FPlatformID,FMajorVersion,FMinorVersion: Cardinal;

    begin
      s:= 'SOFTWAREMicrosoftWindows';
      if SysUtils.Win32PlatForm = VER_PLATFORM_WIN32_NT then
        s:= s + ' NT';
      s:= s + 'CurrentVersion';

      OpenRegistry(true);

      SetRegistryRootKey(HKEY_LOCAL_MACHINE);
      if OpenRegistrySubKey(s) then
        begin
          FRegisteredOwner:= Registry.ReadString('RegisteredOwner');
          FRegisteredCompany:= Registry.ReadString('RegisteredOrganization');
          FProductID:= Registry.ReadString('ProductID');
          FProductName:= Registry.ReadString('ProductName');
          CloseRegistrySubKey;
        end;

      os.dwOSVersionInfoSize:= SizeOf(os);
      GetVersionEx(os);
      FCSDVersion:= os.szCSDVersion;
      FBuildNumber:= os.dwBuildNumber;
      FPlatformID:= os.dwPlatformId;
      FMajorVersion:= os.dwMajorVersion;
      FMinorVersion:= os.dwMinorVersion;

         GlobalMemoryStatus(mstat);
         memo1.lines.add( '----Memory status -----------------------------');
         memo1.lines.add( '실제 토탈메모리     : '+ inttostr(mstat.dwTotalPhys));
         memo1.lines.add( '실제 사용가능메모리 : '+ inttostr(mstat.dwAvailPhys));
         memo1.lines.add( '가상 토탈메모리     : '+ inttostr(mstat.dwTotalVirtual));
         memo1.lines.add( '가상 사용가능메모리 : '+ inttostr(mstat.dwAvailVirtual));

    end;
    procedure TForm1.OpenRegistry(aReadOnly: Boolean);
    begin
      if not Assigned(FRegistry) then
        FRegistry:= TRegistry.Create;
    end;
    procedure TForm1.SetRegistryRootKey(aRootKey: HKEY);
    begin
      if not Assigned(FRegistry) then exit;

      FRegistry.RootKey:= aRootKey;
    end;
    function TForm1.OpenRegistrySubKey(const aSubKey: string): Boolean;
    begin
      Result:= false;

      if not Assigned(FRegistry) then exit;

      Result:= FRegistry.OpenKey(aSubKey, false);
    end;
    procedure TForm1.CloseRegistrySubKey;
    begin
      if not Assigned(FRegistry) then exit;

      FRegistry.CloseKey;
    end;

    end.

  • Profile
    허진 2003.08.14 18:44
    감사힙니다.