AGB  ·  Datenschutz  ·  Impressum  







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

Netzwerk Infos

Ein Thema von theomega · begonnen am 29. Jul 2002 · letzter Beitrag vom 9. Feb 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#1

Netzwerk Infos

  Alt 29. Jul 2002, 22:31
Hallo: habe ein Paar Fragen:

1. Wie mache ich aus einem Computer Namen ("\\Computer") seine IP?
2. Wie kann ich mehr Informationen über eine Freigabe ("\\Computer\Freigabe") erhalten. z.B. Passwort, Größe, Anzahl der Dateien, Aktuelle Anzahl der Benutzer usw

Gruß

bdominik
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 29. Jul 2002, 23:05
Moin TheOmega,

das meiste kannst Du über die Netxxx Funktionen der LanManager API auslesen, oder über die WNetxxx Funktionen.
Die Einzelheiten dazu stehen im PSDK (es gibt zig-Netxxx Funktionen )
In Delphi sind nur die WNetxxx Funktionen deklariert, die anderen müsstest Du Dir selber aus den Headern übersetzen, oder Du nutzt schon existierende Übersetzungen.
Was noch wichtig wäre:
  1. Viele der Netxxx Funktionen gibt es nur unter NT ff
  2. Wenn es die Funktionen auch unter 9x/Me gibt, so unterscheiden sich die Deklarationen der Funktionen und Datentypen

Das angenehme an den Netxxx Funktionen:
Sie reservieren den erforderlichen Buffer selber. Man muss ihn nur nach Gebrauch wieder freigeben.

Die Anzahl der Dateien geht dann immer "zu Fuss" also FindFirst/FindNext (mir fällt zumindest auf Anhieb keine API dafür ein. NetShareGetInfo gibt das, z.B. nicht her )

Ach so:
Immer wieder gern gefragt, wie ich sehe:
Passworte kannst Du nicht auslesen.
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 theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#3
  Alt 30. Jul 2002, 10:51
Ich wollte ja nur ob Passwort und nicht wiePasswort.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 30. Jul 2002, 11:05
Moin TheOmega,

die Frage lautete

Zitat:
2. Wie kann ich mehr Informationen über eine Freigabe ("\\Computer\Freigabe") erhalten. z.B. Passwort...
war also sehr wohl die Frage nach dem wie, und nicht nach dem ob

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 theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#5
  Alt 30. Jul 2002, 11:21
Also richtiG:
2. Wie kann ich mehr Informationen über eine Freigabe ("\\Computer\Freigabe") erhalten. z.B. ob ein Passwort vorhanden ist.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 30. Jul 2002, 11:42
Moin TheOmega,

war auch nicht böse gemeint
Über die Frage nach PW auslesen bin ich halt nur öfter in diesem Zusammenhang gestolpert.

Solltest Du Probleme mit den Infos aus dem PSDK haben sag' bescheid. Mit den Netxxx Funktionen hab' ich schon öfter gearbeitet (zumindest unter W2K)
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 theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#7
  Alt 30. Jul 2002, 12:11
also: erstes Problem:

habe eine Struktur definiert:
Code:
type PUSER_INFO_1 = ^USER_INFO_1;
USER_INFO_1 = record
shi2_netname: PWideChar;
shi2_type: DWORD;
shi2_remark: PWideChar;
shi2_permissions: DWORD;
shi2_max_uses: DWORD;
shi2_current_uses: DWORD;
shi2_path: PWideChar;
shi2_passwd: PWideChar;
end;
dann habe ich die funktion engebunden:
Code:
function NetShareGetInfo(SeverName, NetName: PWideChar; Level: DWORD; Buf: Pointer): LongInt; stdcall; external 'netapi32.dll';
und habe jetzt folgende procedure bentutz:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var buf:PUSER_INFO_1;
begin;
GetMem(Buf, Sizeof(Buf));
NetShareGetInfo('Computernamen','weisnichtwashierhersoll',2,pointer(buf));
showmessage(buf.shi2_path);
end;
Wenn ich jetzt auf den Button drücke bekomm ich eine leere Messagebox. Mir ist nicht ganz klar, was hier rauskommen sollte, aber irgwndwas sollte ja schon. Und was muß der zweite Parameter von NetShareGetInfo sein? die Arbeitsgruppe?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 30. Jul 2002, 13:03
Moin TheOmega,

der zweite Parameter gibt den Namen des Shares an, von dem die Info abgefragt werden soll.
Warum hast Du eigentlich die SHARE_INFO_2 Struktur USER_INFO_1 genannt?
(Copy & Paste Problem? )

Wie weiter oben schon erwähnt:
Die Netxxx Funktionen unter NT ff reservieren sich den Platz selber, also ist GetMem überflüssig.
Worauf man, gerade wenn man noch nicht mit diesen Funktionen gearbeitet hat leicht reinfallen kann:
Da die Funktionen den Buffer selber reservieren, muss nicht der Pointer, sondern die Adresse des Pointers übergeben werden (siehe Muster).

So geht's:

Code:
var
  pBuffer : PSHARE_INFO_2;

begin
  if NetShareGetInfo(nil,'c$',2,@pBuffer) = NERR_Success then
  begin
    try
      ShowMessage(pBuffer.shi2_path);
    finally
      NetApiBufferFree(pBuffer);
    end;
  end;
end;
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 theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#9
  Alt 30. Jul 2002, 14:21
Wo ist das NERR_Success definiert?
Ich habe mal vereinfacht folgendes geschrieben:
Code:
type PSHARE_INFO_2 = ^SHARE_INFO_2;
SHARE_INFO_2 = record
shi2_netname: PWideChar;
shi2_type: DWORD;
shi2_remark: PWideChar;
shi2_permissions: DWORD;
shi2_max_uses: DWORD;
shi2_current_uses: DWORD;
shi2_path: PWideChar;
shi2_passwd: PWideChar;
end;

...

function NetShareGetInfo(SeverName, NetName: PWideChar; Level: DWORD; Buf: Pointer): LongInt; stdcall; external 'netapi32.dll';
procedure NetApiBufferFree(Buf: Pointer) stdcall; external 'netapi32.dll';

procedure TForm1.Button1Click(Sender: TObject);
var buf:PSHARE_INFO_2;
begin;
NetShareGetInfo('\\Computernamen','Freigabenamen',2,@buf);
ShowMessage(buf.shi2_path);
NetApiBufferFree(buf);
end;
Jetzt bekomme ich einen Runtimerror. Was mache ich falsch? Und warum haßt du für den Computernamen ein NIL eingesetzt?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 30. Jul 2002, 14:49
Moin TheOmega,

ändere doch mal die Deklaration von NetApiBufferFree von procedure auf function.
In der API gibt es keine Prozeduren.
Ausserdem würde ich auch noch den Namen der Funktionen jeweils mit angeben.
Nerr_Success ist in der LMERR.H definiert, und hat einfach den Wert 0.
Du kannst auch ERROR_SUCCESS nehmen.

Sollte der Fehler jetzt immer noch auftauchen, dann wäre es ganz hilfreich zu wissen, welcher, und wo er auftritt.

Ach ja: nil sagt der Funktion, dass sie den lokalen Rechner benutzen soll.
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
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 17:25 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