Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi versteckte freigaben finden (https://www.delphipraxis.net/62082-versteckte-freigaben-finden.html)

Christian Seehase 3. Feb 2006 19:42

Re: versteckte freigaben finden
 
Moin MacBones,

Rückgabewert ist das, was die Funktion zurückgibt ;-)

Probier's mal so (auszugsweise):

Delphi-Quellcode:
var
  dwResult : DWORD;

  dwResult := NetShareEnum('MACBONES',.....);
  if dwResult <> NERR_SUCCESS then begin
    ShowMessage(SysErrorMessage(dwResult));
  end;

MacBones 3. Feb 2006 21:37

Re: versteckte freigaben finden
 
Danke, habs probiert und dann schreibt er:
"Für das Unicode-Zeichen ist kein zugeordnetes Zeichen in der Mehrbytecodepage vorhanden"

Muss ich da was konvertieren ('MACBONES') oder was soll das heißen ?

MacBones 6. Feb 2006 13:33

Re: versteckte freigaben finden
 
Hab schon vieles versucht, aber ich weiß echt nicht weiter, kommt und sagt es mir, was ich da machen muss. Mich verwirrt das alles zuviel mit dem Unicode zeug.

Christian Seehase 6. Feb 2006 20:40

Re: versteckte freigaben finden
 
Moin MacBones,

da ich so Dein Problem nicht reproduzieren kann, könnte es vielleicht helfen, wenn Du einmal genau schreibst, wie Du das Aufrufst, und wie die Deklarationen aussehen.

MacBones 6. Feb 2006 21:23

Re: versteckte freigaben finden
 
Hab da halt die JEDI runtergeladen und eingebunden, hab ich hier irgendwo bei im Forum gefunden, als ich die Suche verwendet hab.
Also die auferufene Function lautet:
Delphi-Quellcode:
function NetShareEnum(servername: LPTSTR; level: DWORD; var butptr: Pointer;
  prefmaxlen: DWORD; var entriesread: DWORD; var totalentries: DWORD;
  resume_handle: PDWORD): Integer; stdcall; external 'netapi32.dll';
Der aufruf lautet wie folgt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  shareBuffer: PSHARE_INFO_502;
  s2: TShareInfo502Array;
  dwRead, dwEntries: Cardinal;
  i: Integer;
  server: LPTSTR;
begin
listbox1.Clear;
server:= nil;

  NetShareEnum(server, 502, Pointer(shareBuffer), DWORD(-1), dwRead, dwEntries, nil);
  s2 := TShareInfo502Array(shareBuffer);
  for i := 0 to dwRead - 1 do begin
    listbox1.Items.Add(s2[i].shi502_netname);
  end;
end;
Das wars im Prinzip.

Christian Seehase 6. Feb 2006 22:04

Re: versteckte freigaben finden
 
Moin MacBones,

deklariere doch einmal die Variable Server als WideString und übergebe dass dann so @Server[1].
Das geht natürlich nur, wenn die Variable nicht leer ist. Den Sonderfall müsstest Du dann getrennt betrachten, oder mit PWideChar arbeiten.
Im letzteren Falle könntest Du das so machen:

Delphi-Quellcode:
var
  pwcServer : PWideChar;
  sServer  : string; // Soll hier nur als Beispiel für einen "normalen" string stehen
  dwLen    : DWORD;

begin
  sServer := 'MacBones';
  dwLen  := (length(sServer)+1) shl 2; // +1 für das abschliessende #00#00, mal 2 für 2 Byte je Zeichen
  GetMem(pwcServer,dwLen); // Platz reservieren
  try
    StringToWideChar(sServer,pwcServer,dwLen);
    if NetShareEnum(pwcServer,.....) <> NERR_SUCCESS then exit;
    try
    finally
      NetApiBufferFree(....);
    end;
  finally
    FreeMem(pwcServer,dwLen); // Platz wieder freigeben
  end;
Das dürfte auch die flexiblere Variante sein, da Du auch einen Leerstring erfolgreich als eigenen Rechner einsetzen kannst.

MacBones 8. Feb 2006 20:04

Re: versteckte freigaben finden
 
ok das funktioniert... aber nur wenn ich entweder meinen eigen PC reinschreibe oder gar keinen also ''. Nach wie vor zeigt der Code also nur meine eigenen freigaben an und nicht die meines 2. Rechners 'Pentium_III', oder kann Delphi mit solchen Netzwerknamen nichts anfangen ?

Christian Seehase 8. Feb 2006 20:21

Re: versteckte freigaben finden
 
Moin MacBones,

wenn Du den Rechner so nennen kannst, sollte auch die API da mitspielen, es wäre in jedem Falle kein Delphi-Problem.

Bekommst du, z.B., das Laufwerk C: als Exploreransicht angezeigt, wenn Du unter Start\Ausführen mal \\Pentium_III\C$ eingibst?

MacBones 9. Feb 2006 14:59

Re: versteckte freigaben finden
 
verdammt, nein das geht nicht, da kommt son dialog wo man sich anmelden muss. wie kann ich das mit Delphi umgehen?

Christian Seehase 9. Feb 2006 18:20

Re: versteckte freigaben finden
 
Moin MacBones,

wenn Du einen Account hast, mit dem Du auf den anderen Rechner zugreifen darfst, und der administrative Rechte auf dem anderen Rechner hat, solltest Du hier mal nach Hier im Forum suchenLogonUser suchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 Uhr.
Seite 2 von 3     12 3      

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