Entwickler-Ecke
Windows API - Abfragen, ob ein lokaler Ordner freigegeben ist
jaenicke - Do 29.12.11 10:52
Titel: Abfragen, ob ein lokaler Ordner freigegeben ist
Hallo,
ich stehe vor dem Problem, dass ich erkennen möchte, ob ein lokaler Ordner (//EDIT: im Netzwerk) freigegeben ist. Gibt es eine direkte Möglichkeit dies abzufragen? Oder muss ich tatsächlich alle Freigaben des Rechners durchgehen um zu schauen, ob dieser lokale Ordner dabei ist?
Der Windows Explorer zeigt diese Information ja bei den lokalen Ordnern auch an. Deshalb vermute ich eigentlich, dass sich das irgendwie abfragen lässt.
// EDIT:
Crosspost:
http://www.delphipraxis.net/165429-netzwerkfreigabe-auf-lokalem-ordner-erkennen.html#post1143701
Vielen Dank schon einmal,
schönen Gruß,
Sebastian
Tranx - Do 29.12.11 15:05
Ich habe mal so rumgegooglet. Da ist zum einen die Kommandozeilenversion : CACLS.EXE, welche die Berechtigungen ausgibt.
Aber das ist echt gewöhnungsbedürftig und nicht einfach auszulesen.
Ich habe dem Benutzer "Jeder" im Unterverzeichnis Test im Verzeichnis C:\Test die unten angegebenen Rechte verweigert (Ausführen und Schreiben). Das Ergebnis der Abfrage: (Ich habe extra den Zeichendsatz nicht geändert. Daher die fehlerhaften IUmlaute ä und Ä)
CACLS C:\Temp\Test >Datei.txt ergab:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| C:\temp\test Jeder:(OI)(CI)(DENY)(Beschr„nkter Zugriff:)
FILE_WRITE_DATA FILE_EXECUTE VORDEFINIERT\Administratoren:(OI)(CI)F VORDEFINIERT\Benutzer:(OI)(CI)R VORDEFINIERT\Benutzer:(CI)(Beschr„nkter Zugriff:)
SYNCHRONIZE FILE_APPEND_DATA VORDEFINIERT\Benutzer:(CI)(Beschr„nkter Zugriff:)
SYNCHRONIZE FILE_WRITE_DATA ERSTELLER-BESITZER:(OI)(CI)(IO)F Jeder:(OI)(CI)C NT-AUTORITŽT\SYSTEM:(OI)(CI)F |
Vielleicht findest Du hier was anderes:
http://twapi.magicsplat.com/security.html
jaenicke - Do 29.12.11 15:11
Die Berechtigungen auszulesen wäre relativ einfach, aber das meinte ich nicht.
Ich meinte Freigaben, aber ich habe vergessen explizit Netzwerk dazuzuschreiben, sorry. Bei Freigaben dachte ich das wäre klar. Es geht darum festzustellen, ob ein Programm loakl ioder via Netzwerkfreigabe gestartet wurde. Wenn es lokal gestartet wurde, soll geschaut werden, ob das Verzeichnis freigegeben ist, denn dann soll kein lokaler Start erfolgen.
Tranx - Do 29.12.11 15:32
Entschuldigung, hast ja Recht. Habe echt irgendwie das Ganze falsch verstanden.
NET SHARE gibt die Freigaben des lokalen Rechners aus:
NET SHARE >Datei.txt
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Name Ressource Beschreibung
------------------------------------------------------------------------------- D$ D:\ Standardfreigabe F$ F:\ Standardfreigabe ADMIN$ C:\WINDOWS Remoteadmin C$ C:\ Standardfreigabe IPC$ Remote-IPC CD E:\ FreeCommander C:\Programme\FreeCommander Temp C:\Temp <= die habe ich erzeugt!!! Der Befehl wurde erfolgreich ausgefhrt. |
das ist ja recht einfach auszulesen. Dann ist allerdings jeder der Freigaben durchzugehen. Aber so viele wird es wohl auf einem lokalen Rechner kaum geben, oder? Also ist es eigentlich keine Lösung eigaben einzeln durchgehen und auf den Ordner hin abfragen.
bummi - Do 29.12.11 15:32
wenn wir schon bei Kommandozeilen sind was wäre mit net share
jaenicke - Do 29.12.11 16:06
Dafür brauche ich keine Konsolenausgaben. :shock:
Diese Liste bekomme ich mit WNetEnumResource oder noch einfacher via NetShareEnum.
Leider sind diese Funktionen aber manchmal ziemlich langsam, so dass ich es ungern auf diesem Umweg machen würde. Das meinte ich hier auch:
jaenicke hat folgendes geschrieben : |
Oder muss ich tatsächlich alle Freigaben des Rechners durchgehen um zu schauen, ob dieser lokale Ordner dabei ist? |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!