AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit NetServerGetInfo

Ein Thema von Luckie · begonnen am 3. Jun 2005 · letzter Beitrag vom 3. Jun 2005
 
Benutzerbild von Luckie
Luckie

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

Problem mit NetServerGetInfo

  Alt 3. Jun 2005, 12:13
Ich versuche mittels der API Funktion MSDN-Library durchsuchenNetServerGetInfo das Betriebssystem des remote Rechners zu ermitteln. Implementiert habe ich es so:

Delphi-Quellcode:
type
  TSERVER_INFO_101 = packed record
    sv101_platform_ID: DWORD;
    sv101_name: PWChar;
    sv101_version_major: DWORD;
    sv101_version_minor: DWORD;
    sv101_type: DWORD; // not yet defined here!
    sv101_comment: PWChar;
  end;
  PSERVER_INFO_101 = ^TSERVER_INFO_101;
(Die Konstanten für sv101_type habe ich noch nicht definiert, da ich sie erstmal nicht brauche.)
Delphi-Quellcode:
function NetServerGetInfo(const servername: PWChar; level: DWORD; bufptr:
  Pointer): NET_API_STATUS; stdcall;

// ...

function NetServerGetInfo; external netapi32lib name 'NetServerGetInfo';
Aufruf:
Delphi-Quellcode:
function GetRemoteOS(const Computer: WideString; var Version: string): DWORD;
var
  res: DWORD;
  s: string;
  si: Pointer;
  Major: DWORD;
  Minor: DWORD;
resourcestring
  rsUnknown = 'Betriebsystem unbekannt';
begin
  res := 0;
  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 then
      s := 'Windows 95/98/ME'
    else if (Major = 4) and (Minor = 0) then
      s := 'Windows NT 4.0'
    else if (Major = 5) and (Minor = 0) then
      s := 'Windows 2000'
    else if (Major = 5) and (Minor = 1) then
      s := 'Windows XP'
    else if (Major = 5) and (Minor = 2) then
      s := 'Windows 2003 Server Family'
    else
      s := rsUnknown;
    Version := s;
  end;
  NetApiBufferFree(si);
  result := res;
end;
Das Problem: Ich bekomme eine Access Violation nach dem Aufruf der Funktion. NetServerGetInfo gibt übrigens 1241672 zurück.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
 


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 16:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz