AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Freigegebene Festplatten eines PCs ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Freigegebene Festplatten eines PCs ermitteln

Ein Thema von Salomon · begonnen am 6. Mai 2003 · letzter Beitrag vom 18. Jan 2021
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#1

Freigegebene Festplatten eines PCs ermitteln

  Alt 6. Mai 2003, 19:33
Hallo,
weiß jemand wie ich die freigebenen Festplatten eines Netzwerk PCs ermitteln kann?
Ich stelle mir das so vor, das ich einer Funktion eine IP Adresse übergebe und diese dann den PC nach freigegebenen Resourcen scannt und sie mir zurückliefert.

Das "WNetOpenEnum Demo" habe ich mir auch schon angeschaut. Dort wird aber immer das ganze Netz durchsucht, was für meine Zwecke nicht sinnvoll ist. Ich möchte eben speziell einzelne PCs abfragen.

Mfg Salomon
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2
  Alt 6. Mai 2003, 19:53
Schau dir mal im MSDN die Funktionen WNetEnumResource oder NetShareEnum an.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#3
  Alt 6. Mai 2003, 21:57
Welche Unit muss ich denn einbinden damit ich "NetShareEnum" benutzten kann? Oder gibt es gar keine Header files?
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4
  Alt 7. Mai 2003, 12:30
Keine Ahnung, ob es da Übersetzungen gibt. Ich schau mal...

Bei meinem Delphi ist nix dabei. Aber schau mal bei den Jedis vorbei, die haben vielleicht die Header-Übersetzungen für diese Funktionen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#5
  Alt 7. Mai 2003, 14:40
Wie Chewie geschrieben hat, brauchst du die Headerüerbsetzungen der Jedis. Sonst geht das nicht.
Du brauchst den Heder Lmshare.h

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#6
  Alt 7. Mai 2003, 15:34
Ok, danke. Schau ich mir gegen Abend mal genauer an.
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#7
  Alt 7. Mai 2003, 22:39
Die passenden Jedi Header habe ich jetzt, allerdings bringt mich das leider nicht weiter
Die Net Funktionen (Lan Manager funktionen) sind zu alt, und werden im neuen WinXP nicht mehr unterstützt. Die benötigte "SvrApi.dll" ist kein Bestandteil des Betriebssystem mehr.

Bleiben also nur noch die WNet Funktionen, mit denen ich allerdings nicht zurecht komme.
Mir ist bei den Funktionen überhauptnicht ersichtlich wie ich einzelne Rechner ansprechen an. Ein wenig Hilfe wäre nicht schlecht, bin am verzweifeln
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8
  Alt 8. Mai 2003, 00:06
Nicht ganz. Schau mal ins SDK, dann siehst du Folgendes:
Zitat von Windows SDK:
Library: Use Netapi32.lib (Windows NT/2000/XP) or Svrapi.lib (Windows 95/98/Me)
Du brauchst also nicht die svrapi.dll, sondern die netapi32.dll. Und die hast du in deinem System32-Verzeichnis.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#9
  Alt 8. Mai 2003, 16:04
Die Jedi Header Files setzten auf die Svrapi.dll auf, und sind nicht geeignet.
Daher habe ich die NetSharEnum nun direkt implementiert. Der Code läst sich auch kompelieren, aber ich erhalte keine Freigaben zurück
Hast du eine Idee woran das liegen könnte? Hier der Quellcode:

Delphi-Quellcode:
const
    LM20_NNLEN = 12;
    SHPWLEN = 8;
    SHI50F_RDONLY = 1;
    SHI50F_FULL = 2;
    STYPE_DISKTREE = 0;
    
    MaxNetArrayItems=512;

type
TShareInfo50 = packed record
    shi50_netname: array[0..LM20_NNLEN] of Char;
    shi50_type: Byte;
    shi50_flags: Short;
    shi50_remark: PChar;
    shi50_path: PChar;
    shi50_rw_password: array[0..SHPWLEN] of Char;
    shi50_ro_password: array[0..SHPWLEN] of Char;
end;

type
TShareInfo0 = packed record
    shi0_netname : array[0..LM20_NNLEN] of Char;
end;

  Function NetShareEnum(const pszServer: PChar; sLevel: SmallInt;
    pbBuffer: Pointer; cbBuffer: Word; var pcEntriesRead: Word;
    var pcTotalAvail: Word): DWORD; stdcall; external 'netapi32.dll';

Alle Freigaben sollen in einer Combobox aufgelistet werden, es kommt aber nichts an???

Delphi-Quellcode:
procedure TForm3.SpeedButton2Click(Sender: TObject);
Var
ShareInfo:Array[0..MaxNetArrayItems-1] Of TShareInfo50;
EntriesRead, TotalAvial:Word;
Res:Integer;
i:Integer;

begin
FillChar(ShareInfo,SizeOf(ShareInfo),#0);
Res:=NetShareEnum(0,50,@ShareInfo,SizeOf(ShareInfo), EntriesRead,TotalAvial);

If Res = No_Error Then
For i:=0 To EntriesRead -1 Do
If Not (String(ShareInfo[i].shi50_netname)='') Then
combobox1.Items.Add(String(ShareInfo[i].shi50_netname));
end;
Ideen was falsch ist, oder warum ich keine Freigaben zurück erhaltet?

Thanx Salomon
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 9. Mai 2003, 18:23
Moin Salomon,

Du hast Dich durchgängig an die Deklarationen für 9x/ME gehalten, zum einen was das Einbinden der Funktion, zum anderen, was die verwendete Struktur angeht.
Für XP musst Du aber die NT/2000/XP Versionen verwenden.


Delphi-Quellcode:
const
  NERR_Success = 0;
  MAX_PREFERRED_LENGTH = DWORD(-1);

type
  NET_API_STATUS = type DWORD;

  PSHARE_INFO_0 = ^SHARE_INFO_0;
  SHARE_INFO_0 =
    packed record
      shi0_netname : PWChar;
    end;

function NetApiBufferFree(
    const Buffer : Pointer
    ) : NET_API_STATUS; stdcall; external 'netapi32.dll';

function NetShareEnum(
    const servername : PWChar;
    const level : DWord;
    const bufptr : Pointer;
    const prefmaxlen : DWord;
    const entriesread : PDWord;
    const totalentries : PDWord;
    const resume_handle : PDWord
    ) : NET_API_STATUS; stdcall; external 'netapi32.dll';


var
  si0Work : PSHARE_INFO_0;
  si0Save : PSHARE_INFO_0;
  dwEntriesRead : DWORD;
  dwTotalEntries : DWORD;
  i : DWORD;

begin
  if NetShareEnum(nil,0,@si0Work,MAX_PREFERRED_LENGTH,@dwEntriesRead,@dwTotalEntries,nil) <> Nerr_Success then exit;
  try
    si0Save := si0Work;
    for i := 1 to dwEntriesRead do
    begin
      ComboBox1.Items.Add(si0Save.shi0_netname);
      inc(si0Save);
    end;
  finally
    NetApiBufferFree(si0Work);
  end;
end;
Wichtig hierbei:
Ich verwende für die Funktionsdeklarationen immer die C-typische Variante, während die Jedis, meines Wissens, immer die Borland typische Variante nehmen (var Parameter)
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 4  1 23     Letzte »    


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:19 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