Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Alle SQL Server in akt. Domain auslesen


5 replies to this topic

Anger

Anger
  • Members
  • 32 posts

Posted 08 March 2001 - 08:15

Wie kann ich in IS über die Prototypendeklaration
"LONG NETAPI32.NetServerEnum(..." alle SQL Server in der akt. Domain auslesen?
Habe folgende Funktion geschrieben, welche mir aber immer den Wert 87 zurückgibt, aber nicht z.B. die Anzahl der SQL Server usw...Muss ich bei der Netapi32.NetServerEnmun-Deklaration irgendetwas beachten? Oder ist ein Fehler im Funktionsaufruf?

Domain="meineDomain";

lResult=NetServerEnum(NULL,100,buffer,-1, EintraegeGelesen, EintraegeInsg,4,Domain,Handle);

while(i<(EintraegeGelesen-1))
  RtlMoveMemory(SV_100, buffer,SizeOf(SV_100));
  NumToStr(TestStr,SV_100.name);
  ListAddString(ServerListe,TestStr,AFTER);
  buffer = buffer + SizeOf(SV_100);
  i=i+1;
endwhile;
NetApiBufferFree(buffer);

Könnt Ihr mir helfen? Dankeschön.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 08 March 2001 - 09:21

lResult 87 = falsche parameter.
Stimmt dein prototyp? hast du BYREF verwendet wo erforderlich? Hast Du Handle auf 0 gesetzt?

Anger

Anger
  • Members
  • 32 posts

Posted 08 March 2001 - 11:05

Hier ist mein Prototyp:
prototype LONG NETAPI32.NetServerEnum(VARIANT, BYVAL LONG, LONG, BYVAL LONG, BYREF LONG, BYREF LONG, BYVAL LONG, VARIANT,  BYREF LONG);
Kannst Du mir weiterhelfen?

Anger

Anger
  • Members
  • 32 posts

Posted 08 March 2001 - 12:14

Hat jemand eine Lösung zu meinem Problem???

Habe "Domain" jetzt mal als (BYREF) STRING im Prototyp deklariert und krieg jetzt den Wert 2351 zurück. Was bedeutet dieser Rückgabewert?

Dankeschön.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 08 March 2001 - 14:15

Der dritte Parameter sollte auch BYREF sein. Ausserdem musst Du den DomainName in Unicode angeben (InstallShield verwendet zwar intern Unicode-Strings, wandelt diese aber automatisch in ANSI wenn sie an eine DLL übergeben werden). Ist netapi32 immer im Speicher geladen, oder musst du evtl. auch noch UseDLL aufrufen?

Alles in allem könnte es einfacher sein, das ganze in eine DLL zu packen...