HyperLink


Bejelentkezés
E-mail: 
Jelszó: 






Skip Navigation Links
 

A helyi hálózat tetszőleges gépén futó operációs rendszer lekérdezése


Példaprogram letöltése

3958 bájt

A helyi hálózat számítógépeiről a legváltozatosabb információk kigyűjthetők, legyen szó számítógépnévről, felhasználókról, vagy akár az adott számítógépeken futó operációs rendszerről. Ezeket az információkat API metódusok segítségével kérdezhetjük le, melyek implementációi Windows NT verziótól kezdődően a NETAPI32.DLL állományban kaptak helyet. Cikkünkben bemutatjuk, hogy az operációs rendszer típusára vonatkozó információ megszerzéséhez melyik metódust kell használnunk, és hogyan kell paramétereznünk azt.

A megoldás taglalása előtt megemlítendő, hogy amennyiben a mellékletalkalmazást Windows 98 rendszeren futtatjuk, akkor ott nem található meg a NETAPI32.DLL állomány. Ott a SVRAPI.DLL dinamikusan szerkeszthető könyvtárra kell hivatkozni.
Az adott számítógép operációs rendszerének típusát a NetServerGetInfo API metódussal kérdezhetjük le, de nem közvetlenül. A metódushívás után a paraméterben kapott információból lehet bizonyos következtetéseket levonni erre vonatkozóan. Deklarációja a következő:
NetServerGetInfo
Osztály:
function NetServerGetInfo(
Server: PWideChar; Level: DWord; var BufPtr:Pointer
): LongInt;
A metódussal – attól függően, hogy milyen jellegűre van szükségünk – információkat kaphatunk a LAN egy számítógépéről. Az információ természetét a második paraméterben megadott számmal jelezhetjük. Ennek megfelelően kapunk vissza adattípusokat.
Paraméterek
Server: PWideChar
A LAN adott számítógépének nevét tartalmazó karakterlánc.
Level: DWord
Az információ típusára vonatkozó egész szám, mely meghatározza, hogy milyen típusú struktúra kapható eredményül, amennyiben meghívtuk a metódust.
var BufPtr:Pointer
A cégeredmény memóriaterületére mutató pointer.
Visszatérési érték
Amennyiben a lekérdezés sikerült, akkor a visszatérési értéke nulla.
A második paraméterben megadható egész szám háromféle lehet, melyekhez három struktúratípus tartozik.
Szám Struktúra
100 SERVER_INFO_100
101 SERVER_INFO_101
102 SERVER_INFO_102
A mellékelt példában most a 101 számot adjuk át a második paraméterben, és a SERVER_INFO_101 típusban kapjuk meg az eredményt. A struktúra deklarációja a következő:
SERVER_INFO_101 = record
Az operációs rendszer azonosítója.
  sv101_platform_id : Integer;
A számítógép neve.
  sv101_name : PWideChar;
A verzió főszáma.
  sv101_version_major : Integer;
A verzió alszáma.
  sv101_version_minor : Integer;
  sv101_type : Integer;
  sv101_comment : PWideChar;
end;
PSERVER_INFO_101 = ^SERVER_INFO_101;
A Form szövegmezőjének kitöltésekor és a nyomógomb megnyomásakor meghívjuk az említett osztály statikus GetOSVersion metódusát, melyben elvégezzük az API hívását, és a megoldást a metódus visszatérési értéke szolgáltatja.
Amennyiben a metódushívás eredménye nulla, akkor megvizsgáljuk a mutatót. Ha az nem mutat memóriaterületre, akkor a számítógép operációs rendszere a Windows 9x családba tartozik.
Ellenkező esetben a mutató által jelzett területről beolvassuk az információkat tartalmazó adatokat a struktúrába. Amennyiben a verzió főszáma 4 vagy annál kisebb, akkor az adott gépen Windows NT fut.
info := PSERVER_INFO_101(ptr);
if info^.sv101_version_major <= 4 then
  Result := 'Windows NT'
Egyébként megvizsgáljuk az alszámot is. Amennyiben az nulla, akkor a rendszer Windows 2000.
...
case info^.sv101_version_minor of
  0: result := 'Windows 2000';
Amennyiben 1, akkor pedig Windows XP-ről beszélhetünk.
  1: result := 'Windows XP';
  ...
Ha a kérdéses rendszer nem elérhető, például mert nincs a számítógép bekapcsolva, akkor azt is jelezzük.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 758. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2010 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |