AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Freigegebene Festplatten eines PCs ermitteln

Freigegebene Festplatten eines PCs ermitteln

Ein Thema von Salomon · begonnen am 6. Mai 2003 · letzter Beitrag vom 18. Jan 2021
Antwort Antwort
Seite 2 von 4     12 34   
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#11
  Alt 10. Mai 2003, 00:40
Hallo Christian Seehase,
das sieht ja sehr gut aus. Ich dachte irgendwie die 9x Variante könnte auch auf NT Rechner zugreifen, naja falsch gedacht.
Ich probier das ganze gegen Mittag aus, jetzt hau ich mich erstmal aufs Ohr. Schonmal vielen Dank, ich meld mich dann nochmal hier.

Gute Nacht
Salomon
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
 
#12
  Alt 10. Mai 2003, 11:34
Es funktioniert Die Funktion findet auf meinem XP Rechner sogar versteckte Freigaben die mir gar nicht bekannt waren.
Da ich ja nur die freigegebenen Festplatten brauche, habe ich noch kleine Änderungen vorgenommen. Hier ist der Code für die übrigen DPler:

Einmal die Deklaration für "Share_Info_2". Dieser ermittelt auch den Freigaben Typ in "shi2_type":

Delphi-Quellcode:
type
  PSHARE_INFO_2 =^SHARE_INFO_2;
  SHARE_INFO_2 = packed record
     shi2_netname : PWChar;
     shi2_type : Dword;
     shi2_remark : PWChar;
     shi_permissions : DWord;
     shi2_max_uses : DWord;
     shi2_current_uses : DWord;
     shi2_path : PWChar;
     shi2_passwd : PWChar;
    end;

Und hier das Auflisten von freigegebenen Festplatten.
Delphi-Quellcode:
procedure TForm3.SpeedButton2Click(Sender: TObject);
var
  si2Work : PSHARE_INFO_2;
  si2Save : PSHARE_INFO_2;
  dwEntriesRead : DWORD;
  dwTotalEntries : DWORD;
  i : DWORD;
begin
  if NetShareEnum(nil,2,@si2Work,MAX_PREFERRED_LENGTH,@dwEntriesRead,@dwTotalEntries,nil) <> Nerr_Success then exit;
  try
    si2Save := si2Work;
    for i := 1 to dwEntriesRead do
    begin
      if si2Save.shi2_type = STYPE_DISKTREE then
           ComboBox1.Items.Add(si2Save.shi2_netname);
      inc(si2Save);
    end;
  finally
    NetApiBufferFree(si2Work);
  end;
end;
Eine Frage hätte ich aber noch. Wie schaffe ich es, das mein Programm auch unter 9x funktioniert Hier sind die benötigten Funktionen ja in der "SvrApi.dll".

Thx 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
 
#13
  Alt 10. Mai 2003, 12:13
Zitat von Salomon:
Eine Frage hätte ich aber noch. Wie schaffe ich es, das mein Programm auch unter 9x funktioniert Hier sind die benötigten Funktionen ja in der "SvrApi.dll".

Thx Salomon
1.Möglichkeit: Du bietest zwei Möglichkeiten deines Programms an, eines für 9x/ME und eines für NT/2K/XP.

2. Möglichkeit: Mit GetVersion oder GetVersionEx überprüfst du die Win-Version und bindest die entsprechende DLL dynamisch ein.
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
 
#14
  Alt 10. Mai 2003, 12:36
@ Chewie: Dann werde ich die zweite Version realisieren. So eine Funktion die mir die Windowsversion zurückliefert habe ich schonmal irgendwo verwendet.

@ Alle: Leider stehe ich schon vor dem nächsten Problem So lange mit dem Code der lokale Rechner abgefragt wird läuft alle einwandfrei. Versuche ich aber die freigegebenen Festplatten meines Zweitrechners (auch XP) abzufragen, bekomme ich den ErrorCode 5 zurück => Access Denied (kein Zugriff).
Das kann aber eigentlich nicht sein, da ich über die Netzwerkumgegbung ganz normal ohne Passwort auf die Festplatten mit Lese- und Schreibrechten zugreifen kann.

Vielleicht hat ja einer von euch eine Idee woran das leigen könnte, oder kann den obigen Code mal bei sich im Netzwerk ausprobieren. Andere Rechner fragt man durch eine kleine Änderung ab:
Delphi-Quellcode:
Var
 ...
 res : integer;
begin
   res := NetShareEnum('\\hier die IP des anderen Rechners\',2,@si2Work,MAX_PREFERRED_LENGTH,@dwEntriesRead,@dwTotalEntries,nil);
   showmessage(inttostr(res));

...
Thx 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.262 Beiträge
 
Delphi 2006 Professional
 
#15
  Alt 10. Mai 2003, 15:26
Mion Salomon,

das sollte auch genauso mit einer IP-Adresse, oder dem Rechnernamen funktionieren, ab Windows 2000 auch ohne \\.

Das bei Dir die Funktion auf einen Access Denied läuft kann ich mir im Moment nur damit erklären, dass Du auf den anderen Rechnern keine Admin-Rechte hast, denn die Funktion listet ja auch versteckte und administrative Freigaben (wie C$, D$ usw.) auf.

Bei den Versionen für 9x musst Du übrigens aufpassen. Diese werden auch anders verwendet als unter NT ff. Unter 9x/ME muss z.B. der Buffer selber reserviert werden, was die NT Varianten selber erledigen.

Am Besten schaust Du Dir mal die Doku dazu an. Entweder im PSDK, oder online unter msdn.microsoft.com.
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 Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#16
  Alt 10. Mai 2003, 18:58
Argh, wer lesen kann ist klar im Vorteil...
Zitat:
Administrator, Power User, Print Operator, or Server Operator group membership is required to successfully execute the NetShareEnum function at levels 2 and 502. No special group membership is required for level 0 or level 1 calls.
Ich habe das ganze jetzt auf Level 1 realisiert, klappt wunderbar
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

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

Registriert seit: 11. Jul 2003
Ort: LinuxLand
13 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Freigegebene Festplatten eines PCs ermitteln

  Alt 11. Jul 2003, 06:09
Sicherlich werdet ihr mich jetzt für depperd halten,
aber koennte das mal einer als unit posten,
bin zu bleed das zu implementieren...


mfg

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

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Freigegebene Festplatten eines PCs ermitteln

  Alt 11. Jul 2003, 14:54
Moin TuXX,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Da sich mit den Codes auf der ersten Seite dieses Threads das ganze nahezu per Copy&Paste implementieren liesse:

Was hast Du denn genau vor, und woran scheitert es?
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
TuXX

Registriert seit: 11. Jul 2003
Ort: LinuxLand
13 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Freigegebene Festplatten eines PCs ermitteln

  Alt 13. Jul 2003, 00:07
Erstmal: Vielen Dank für das herzliche Wilkommen.

Mein "Problem" hat sich schon erledigt,
Es ging wirklich mit copy 'n paste..

Vvielen Dank trozdem

TuXX
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#20

Re: Freigegebene Festplatten eines PCs ermitteln

  Alt 27. Aug 2003, 11:44
Hi,

tolles Thema, da ich mich auch gerade damit beschäftige. Ich habe euren Thread verfolgt, und mir dann auch die Jedi-Libary heruntergeladen.
Allerdings möchte ich nicht die Freigaben abfragen, sondern eine neue erstellen (unter XP).
Dabei habe ich dann auch gleich Probleme. Hat einer einen Bespielcode der mir hier weiterhilft?

Danke.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 19:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf