AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Betriebssysteminformationen mit NetServerGetInfo
Thema durchsuchen
Ansicht
Themen-Optionen

Betriebssysteminformationen mit NetServerGetInfo

Ein Thema von Luckie · begonnen am 19. Mär 2006 · letzter Beitrag vom 8. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Betriebssysteminformationen mit NetServerGetInfo

  Alt 19. Mär 2006, 22:22
WQeiß jemand, wie man mit MSDN-Library durchsuchenNetServerGetInfo noch detailiertere Betriebssysteminformationen bekommt?
Bei mir sieht das bisher so aus:
Delphi-Quellcode:
function GetRemoteOS(const Computer: WideString; var Version: string): DWORD;
var
  res : DWORD;
  s : string;
  si : Pointer;
  Major : DWORD;
  Minor : DWORD;
begin
  si := nil;
  s := '';

  res := NetServerGetInfo(PWideChar(Computer), 101, @si);
  if res = NERR_Success then
  begin
    Major := PSERVER_INFO_101(si)^.sv101_version_major;
    Minor := PSERVER_INFO_101(si)^.sv101_version_minor;
    if (Major = 4) and (Minor = 0) then
    begin
      s := 'Windows NT 4.0';
    end
    else if (Major = 5) and (Minor = 0) then
    begin
      s := 'Windows 2000';
    end
    else if (Major = 5) and (Minor = 1) then
    begin
      s := 'Windows XP';
    end
    else if (Major = 5) and (Minor = 2) then
    begin
      s := 'Windows 2003 Server Family';
    end;
  end;
  Version := s;
  NetApiBufferFree(si);
  result := res;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Betriebssysteminformationen mit NetServerGetInfo

  Alt 19. Mär 2006, 23:25
Moin Luckie,

welche weiteren Details schweben Dir denn vor?
SERVER_INFO_102 liefert schon mal mehr.

NetApiBufferFree brauchst Du, IMHO, nur aufzurufen, wenn die Funktion NERR_SUCCESS zurückliefert, da ansonsten ja auch kein Speicher reserviert wurde.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Betriebssysteminformationen mit NetServerGetInfo

  Alt 19. Mär 2006, 23:38
Unterscheidung zwischen XP Hone und XP Professional zum Beispiel.

Diese Informationen bekomme ich schon:
Delphi-Quellcode:
const
  SV_TYPE_WORKSTATION = $00000001; // A LAN Manager workstation
  SV_TYPE_SERVER = $00000002; // A LAN Manager server
  SV_TYPE_SQLSERVER = $00000004; // Any server running with Microsoft SQL Server
  SV_TYPE_DOMAIN_CTRL = $00000008; // Primary domain controller
  SV_TYPE_DOMAIN_BAKCTRL = $00000010; // Backup domain controller
  SV_TYPE_TIME_SOURCE = $00000020; // Server running the Timesource service
  SV_TYPE_AFP = $00000040; // Apple File Protocol server
  SV_TYPE_NOVELL = $00000080; // Novell server
  SV_TYPE_DOMAIN_MEMBER = $00000100; // LAN Manager 2.x domain member
  SV_TYPE_PRINTQ_SERVER = $00000200; // Server sharing print queue
  SV_TYPE_DIALIN_SERVER = $00000400; // Server running dial-in service
  SV_TYPE_XENIX_SERVER = $00000800; // Xenix server
  SV_TYPE_SERVER_UNIX = SV_TYPE_XENIX_SERVER; //
  SV_TYPE_NT = $00001000; // Windows Server 2003, Windows XP, Windows 2000, or Windows NT
  SV_TYPE_WFW = $00002000; // Server running Windows for Workgroups
  SV_TYPE_SERVER_MFPN = $00004000; // Microsoft File and Print for NetWare
  SV_TYPE_SERVER_NT = $00008000;
    // Windows Server 2003, Windows 2000 server, or Windows NT server that is not a domain controller
  SV_TYPE_POTENTIAL_BROWSER = $00010000; // Server that can run the browser service
  SV_TYPE_BACKUP_BROWSER = $00020000; // Server running a browser service as backup
  SV_TYPE_MASTER_BROWSER = $00040000; // Server running the master browser service
  SV_TYPE_DOMAIN_MASTER = $00080000; // Server running the domain master browser
  SV_TYPE_SERVER_OSF = $00100000; //
  SV_TYPE_SERVER_VMS = $00200000;
  SV_TYPE_WINDOWS = $00400000; // Windows95 and above
  SV_TYPE_DFS = $00800000; // Root of a DFS tree
  SV_TYPE_CLUSTER_NT = $01000000; // NT Cluster
  SV_TYPE_TERMINALSERVER = $02000000; // Terminal Server(Hydra)
  SV_TYPE_CLUSTER_VS_NT = $04000000; // NT Cluster Virtual Server Name
  SV_TYPE_DCE = $10000000; // IBM DSS (Directory and Security Services) or equivalent
  SV_TYPE_ALTERNATE_XPORT = $20000000; // return list for alternate transport
  SV_TYPE_LOCAL_LIST_ONLY = $40000000; // Return local list only
  SV_TYPE_DOMAIN_ENUM = DWORD($80000000); // Primary domain
  SV_TYPE_ALL = DWORD($FFFFFFFF); // handy for NetServerEnum2

function ServerTypeToStringArray(svType: DWORD): TStringDynArray;
const
  cStrings : array[0..30] of string = (
    'LAN Manager workstation',
    'LAN Manager server',
    'SQL Server',
    'Primary domain controller',
    'Backup domain controller',
    'Timesource service',
    'Apple File Protocol server',
    'Novell server',
    'LAN Manager 2.x domain member',
    'Server sharing print queue',
    'dial-in service',
    'Xenix server',
    '',
    '',
    'File and Print for NetWare',
    '',
    'can run the browser service',
    'browser service',
    'browser service as backup',
    'domain master browser',
    '',
    '',
    'Windows95 and above',
    'Root of a DFS tree',
    'NT Cluster',
    'Terminal Server(Hydra)',
    'NT Cluster Virtual Server Name',
    'IBM DSS',
    '',
    '',
    'Primary domain'
    );
var
  i : Integer;
begin
  for i := 0 to 31 do
  begin
    if Odd(svType) then
    begin
      setlength(result, length(result) + 1);
      result[High(result)] := cStrings[i];
      svType := svType shr 1;
    end;
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Betriebssysteminformationen mit NetServerGetInfo

  Alt 20. Mär 2006, 21:22
Moin Luckie,

wenn Du die Struktur 102 nimmst, bekommst Du ja schon die Major- und Minorversion.
Bei GetVersion findest Du dann ja schon Näheres.
Wie man nun Pro und Home unterscheidet, weiss ich allerdings auch nicht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Betriebssysteminformationen mit NetServerGetInfo

  Alt 20. Mär 2006, 22:19
Die Major und Minerversion habe ich ja schon. MSDN-Library durchsuchenGetversionEx übergibt man aber die Struktur MSDN-Library durchsuchenOSVERSIONINFO, die eben etwas mehr Informationen bereitstellt, die man auswerten kann. Und etVersionEx ist nur für das lokale Betriebssystem gedacht:
Zitat:
The GetVersionEx function obtains extended information about the version of the operating system that is currently running.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Betriebssysteminformationen mit NetServerGetInfo

  Alt 21. Mär 2006, 00:33
Moin Luckie,

NetServerGetInfo mit SERVER_INFO_102 gibt Dir auch die Major- und Minorversion.
Nicht nur GetVersionEx.

(Oder habe ich da jetzt etwas falsch verstanden )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Betriebssysteminformationen mit NetServerGetInfo

  Alt 21. Mär 2006, 06:49
Die Struktur 101 gibt mir schon die Major- und Minorversion. Nur reicht die nicht aus, um zwischen Home und Professional zu unterscheiden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Betriebssysteminformationen mit NetServerGetInfo

  Alt 1. Apr 2006, 14:09
*push*
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Betriebssysteminformationen mit NetServerGetInfo

  Alt 8. Jan 2010, 13:00
Delphi-Quellcode:
function GetOS(const Computer: WideString): string;
var
  res : DWORD;
  s : string;
  si : Pointer;
  Major : DWORD;
  Minor : DWORD;
resourcestring
  rsErrorOSUnknown = 'Betriebssystem unbekannt';
begin
  si := nil;
  s := '';
  res := NetServerGetInfo(PWideChar(Computer), 101, @si);
  if res = NERR_Success then
  begin
    Major := PSERVER_INFO_101(si)^.sv101_version_major;
    Minor := PSERVER_INFO_101(si)^.sv101_version_minor;
    if (Major = 4) and (Minor = 0) then
    begin
      s := 'Windows NT 4.0';
    end
    else if (Major = 5) and (Minor = 0) then
    begin
      s := 'Windows 2000';
    end
    else if (Major = 5) and (Minor = 1) then
    begin
      s := 'Windows XP';
    end
    else if (Major = 5) and (Minor = 2) then
    begin
      s := 'Windows 2003 Server Family';
    end
    else if (Major = 6) and (Minor = 0) then
      s := 'Windows Vista'
    else
      s := rsErrorOSUnknown;

    NetApiBufferFree(si);
  end
  else
    s := rsErrorOSUnknown;
  result := s;
end;
Ist Windows 7 Major = 7 und Minor = 0? Kann das leider hier nicht testen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Betriebssysteminformationen mit NetServerGetInfo

  Alt 8. Jan 2010, 13:17
Zitat von Luckie:
Ist Windows 7 Major = 7 und Minor = 0? Kann das leider hier nicht testen.
Windows 7 hat die Nummer 6.1:
http://msdn.microsoft.com/en-us/libr...33(VS.85).aspx
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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