Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Comptername und GetMotherBoardSerial für WINDOWS und LINUX (https://www.delphipraxis.net/196586-comptername-und-getmotherboardserial-fuer-windows-und-linux.html)

bernhard_LA 1. Jun 2018 12:06

Comptername und GetMotherBoardSerial für WINDOWS und LINUX
 
ich benötige eine Windows und LINUX kompatible Variante dieser beiden Funktionen


Delphi-Quellcode:
Function GetMotherBoardSerial:string;
var
  WMIServices : ISWbemServices;
  Root       : ISWbemObjectSet;
  Item       : Variant;
begin
  WMIServices := CoSWbemLocator.Create.ConnectServer('.', 'root\cimv2','', '', '', '', 0, nil);
  Root := WMIServices.ExecQuery('Select SerialNumber From Win32_BaseBoard','WQL', 0, nil);
  Item := Root.ItemIndex(0);
  Result:=VarToStr(Item.SerialNumber);
end;

function GetComputerName: string;
var
  Buffer: array [0 .. MAX_COMPUTERNAME_LENGTH + 1] of Char;
  Size: Cardinal;
begin
  Size := MAX_COMPUTERNAME_LENGTH + 1;
  Windows.GetComputerName(@Buffer, Size);
  result := StrPas(Buffer);
end;

Ghostwalker 1. Jun 2018 12:35

AW: Comptername und GetMotherBoardSerial für WINDOWS und LINUX
 
Zu GetComputerName:

Wirst pech haben, da das eine Info rein für Windows ist (hab unter Linux noch nirgends einen gesehen)

Zu GetMotherBoardSerial:

Direkt das Bios abfragen statt die Windows-DB.

CCRDude 1. Jun 2018 15:04

AW: Comptername und GetMotherBoardSerial für WINDOWS und LINUX
 
Zitat:

Zitat von Ghostwalker (Beitrag 1403618)
Zu GetComputerName:

Wirst pech haben, da das eine Info rein für Windows ist (hab unter Linux noch nirgends einen gesehen)

Nur etwas nicht gesehen zu haben heißt ja nicht, dass es etwas nicht gibt...

Unter Linux fragte bisher jede Distribution die ich ausprobiert habe schon bei der Installation nach dem Hostnamen, da steht er z.B.:

Code:
cat /etc/hostname
Ohne Garantie dass das bei jeder Distribution dort steht.

Harry Stahl 1. Jun 2018 15:34

AW: Comptername und GetMotherBoardSerial für WINDOWS und LINUX
 
Linux hat keine "Registry" wie Windows (also eine Art zentrale Einstellungsdatenbank), sondern verwaltet viele Informationen einfach in Dateien.

Die gewünschte Information erhält man auf fast allen Linux-Versionen z.B. so:

Delphi-Quellcode:
{$IFDEF LINUX}
  sl := TStringList.create;

  try
  if FileExists('/etc/hostname') then begin
    sl.LoadFromFile('/etc/hostname');

    if sl.count > 0 then begin
      if (sl.count > 1) and (Trim (sl[0]) = '')then begin
        sl.Delete(0);
      end;

      Result := sl[0];
    end;
  end;
  finally
    sl.Free;
  end;
  {$ENDIF}

Basilikum 1. Jun 2018 20:41

AW: Comptername und GetMotherBoardSerial für WINDOWS und LINUX
 
Um unter Linux den Hostname zu bekommen, besser die Funktion uname verwenden - ist zukunftsträchtiger als Files einzulesen:
http://man7.org/linux/man-pages/man2/uname.2.html
(im struct utsname das Feld nodename, und ab dem ersten Punkt abschneiden)

olafhess 2. Jun 2018 06:26

AW: Comptername und GetMotherBoardSerial für WINDOWS und LINUX
 
Zum Auslesen von Hardware-Informationen unter Windows und Linux gibt es das "tsmbios"-Projekt:
https://github.com/RRUZ/tsmbios

Funktioniert wunderbar unter Windows und unterstützt laut Autor auch Linux (Delphi 10.2 und FPC).

Voraussetzung ist, dass die Hardware DMI-Informationen liefert. Nur wirklich alte PCs (deutlich älter als 10 Jahre) sollten das nicht unterstützen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz