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 |
Es funktioniert :D 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:
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".
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; Thx Salomon |
Zitat:
2. Möglichkeit: Mit GetVersion oder GetVersionEx überprüfst du die Win-Version und bindest die entsprechende DLL dynamisch ein. |
@ 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:
Thx Salomon
Var
... res : integer; begin res := NetShareEnum('\\hier die IP des anderen Rechners\',2,@si2Work,MAX_PREFERRED_LENGTH,@dwEntriesRead,@dwTotalEntries,nil); showmessage(inttostr(res)); ... |
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. |
Argh, wer lesen kann ist klar im Vorteil...
Zitat:
|
Re: Freigegebene Festplatten eines PCs ermitteln
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 |
Re: Freigegebene Festplatten eines PCs ermitteln
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? |
Re: Freigegebene Festplatten eines PCs ermitteln
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 |
Re: Freigegebene Festplatten eines PCs ermitteln
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 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