1. Предисловие.Приветствую всех любителей Delphi! В этой статье я хочу поведать вам об одной из замечательных, с моей точки зрения, технологии, разработанной Microsoft для облегчения нашей жизни. Теперь любой программист, используя любой современный язык программирования (не исключая и скрип языков!) может с лёгкостью узнать о своём компьютере практически всё. Теперь программисты всех "вероисповеданий" могут определить, какое оборудование установлено на их компьютере, узнать информацию о материнской плате и процессоре, параметры БИОСа, какие процессы запущены в данный момент, какова температура процессора и скорость вращения кулера, какие настройки графической системы, какие. Одним словом, все о чём вы так долго мечтали, стало доступно благодаря WMI. Звучит заманчиво, не так ли? ;)

Естественно, что WMI - это не только набор параметров. А что это такое - читайте ниже.

Автор: Алексей Павлов

Когда вы вызываете контекстное меню на иконке "Моего компьютера" и щёлкаете на команде "Свойства" - вы видите свойства системы. Эта статья позволит вам внести туда любой свой собственный текст и даже поместить рисунок!

 Для начала давайте заглянем в папку System, находящуюся в директории Windows и найдём там файл инициализации с именем Oeminfo.ini, нужно его отредактировать так, чтобы он выглядел следующим образом:

 

Code:

uses

  Registry;

 

 

procedure GetOwnerAndCompanyName(var sOwner, sOrganization: string);

var

  reg: TRegistry;

  vi: TOSVersionInfo;

  sWindows: string;

begin

  reg      := TRegistry.Create;

  sWindows := '\Windows\';

  try

    vi.dwOSVersionInfoSize := SizeOf(vi);

    getversionex(vi);

    reg.RootKey := HKEY_LOCAL_MACHINE;

    if (vi.dwPlatformId = VER_PLATFORM_WIN32_NT) then sWindows := '\Windows NT\';

    if reg.OpenKey('Software\Microsoft' + sWindows + 'CurrentVersion', False) then

    begin

      // Name

     sOwner := reg.ReadString('RegisteredOwner');

      // Organization

     sOrganization := reg.ReadString('RegisteredOrganization');

    end;

  finally

    reg.Free;

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

  sOwner, sOrganization: string;

begin

  GetOwnerAndCompanyName(sOwner, sOrganization);

  Edit1.Text := sOwner;

  Edit2.Text := sOrganization;

end;

 

 

Code:

Type TOSVersion=(osUnknown, osUnknown9x, osUnknownNT, osWin95, osWin98, osWin98SE, osWinME, osWinNT, osWin2000, osXP);

{©Drkb v.3, ®Vit (Vitaly Nevzorov) - Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.}

 

function GetOSVersion : TOSVersion;

var osVerInfo : TOSVersionInfo;

majorVer, minorVer : Integer;

begin

result := OsUnknown;

osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);

if GetVersionEx(osVerInfo) then

begin

majorVer := osVerInfo.dwMajorVersion;

minorVer := osVerInfo.dwMinorVersion;

case osVerInfo.dwPlatformId of

VER_PLATFORM_WIN32_NT :

Case majorVer of

4:result := OsWinNT;

5:if minorVer=0 then result := OsWin2000

else

if minorVer=1 then result := OsXP else result := osUnknownNT;

else result := osUnknownNT;

end; {Case majorVer of}

VER_PLATFORM_WIN32_WINDOWS :

case majorVer of

4: Case minorVer of

0:result := OsWin95;

10: if osVerInfo.szCSDVersion[1] = 'A' then result := OsWin98SE else result := OsWin98;

90: result := OsWinME;

else result := osUnknown9x;

end;{Case minorVer of}

else result := osUnknown9x;

end{case majorVer of}

else result := OsUnknown;

end;{case osVerInfo.dwPlatformId of}

end;{if GetVersionEx(osVerInfo) then}

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

case GetOSVersion of

osUnknown: Showmessage('Unknown');

osWin95: Showmessage('Win95');

osWin98: Showmessage('Win98');

osWin98SE: Showmessage('Win98SE');

osWinME: Showmessage('WinME');

osWinNT: Showmessage('WinNT');

osWin2000: Showmessage('Win2000');

osXP: Showmessage('XP');

end;

end;

 

Структура SYSTEM_INFO содержит сведения о текущей системе компьютера. Это включает в себя архитектуру и Тип процессора, количество

процессоры в системе, размер страницы, и другая такая информация.