DLL an Windows Explorer kapseln (ORDNER PASSWORTSCHÜTZEN)
-
... wenn du gleich empfindlich darauf reagierst tut mir das natürlich schrecklich leid ... aber ich denke du hast das ein wenig falsch interpretiert ... es gibt nur so viele typen die behaupten es gäbe einfach keine möglichkeit eine passwortschutz für ordner zu programmieren ... dieser post soll nur zeigen, dass es trotzdem geht (fett und groß schreiben heißt in diesem zusammenhang nicht laut schreien).
wenn ich die lösung genau erläutern würde .. würd dies stundenlang dauern und für das hab i mom wirklich keine zeit ... ich hab hier nur mal einen lösungsansatz gegeben wie man starten könnte
vll solltest du auch nicht so schnell überreagieren
-
Ja, evtl. hast du recht. Kann sein, dass ich es überbewertet habe...
Hörte sich nur erst nach "ich will nen Virus schreiben" und "alle zu dumm hier" an.
Frust staut sich eben an, bis er sich irgendwo entläd... sry dude.Evtl. wäre ja auch der Weg über Datei-ACLs (Access Control Lists) eine
Möglichkeit?!Evtl auf diesem Wege...ungetestet:
SECURITY_DESCRIPTOR* psd = (SECURITY_DESCRIPTOR*)malloc(SECURITY_DESCRIPTOR_MIN_LENGTH); InitializeSecurityDescriptor(psd, SECURITY_DESCRIPTOR_REVISION1); ACL* pDacl = (ACL*)malloc(sizeof(ACL)); InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION); SetSecurityDescriptorDacl(psd, TRUE, pDacl, FALSE); SetFileSecurity(TEXT("c:\\test"), DACL_SECURITY_INFORMATION, psd); free(pDacl); free(psd);
-
kein problem dude ... is ja nit weiter schlimm
danke übrigens auch für deine vorschlag ... werd das auch gleich ausprobieren ... ich schätz mal es soll auf das hinauslaufen, dass wenn man dann auf den ordner klickt die message "sie haben keinen zugriff auf diesen ordner" aufpoppen soll oder?
meine jetzige lösung is jedenfalls so aufgebaut das ich mich direkt an den explorer kapsle und der explorer dann in gewisser hinsicht gezwungen ist mein dll aufzuführen um gewisse ordner darzustellen zu können ... die dll kann dann entscheiden ob der user den ordner anschauen darf oder nicht
-
danke übrigens auch für deine vorschlag ... werd das auch gleich ausprobieren ... ich schätz mal es soll auf das hinauslaufen, dass wenn man dann auf den ordner klickt die message "sie haben keinen zugriff auf diesen ordner" aufpoppen soll oder?
Genau das! Und mit deinem Programm/deiner DLL kannst du das entsprechend
steuern. Vielleicht hilft es dir ja weiter
-
wird auch dem administrator der zugriff verweigert?
-
Hallöchen!
Also ich bin hier nur gerade mal reingeflogen und hab mich mit Deiner "Idee" noch nicht tiefer beschäftigt. Aber Du erzählst immer nur, dass Du Dich an den "Explorer hängst" um den Ordnerzugriff zu kontrollieren. Was passiert denn, wenn ich mir einfach meinen WinCommander auf'm USB-Stick mitnehme und Deine Ordner damit auslese?
Wie gesagt, ich hab mich mit der MAterie noch nicht weiter beschäftigt, hab aber ne Idee davon was Du vor hast und bin der Meinung, dass das nicht wirklich sicher sein kann, zumindest in der Form wie ich mir Sicherheit vorstelle. Aber da gibt es ja bekanntermaßen verschiedene Wahrnehmungen.
Das vielleicht nur als kleine Anmerkung. Vielleicht funktioniert es ja auch trotz WinCommander ... war halt nur nen spontaner Einfall.
Gruß,
Timo
-
damit hast du natürlich vollkommen recht timo, die implementierung erfolgt nur über den explorer ... das bedeutet das die "sicherheit" (für mancher user ist übrigens schon sicherheit wenn man einen ordner versteckt) nur für den explorer auch wirklich gewährleistet.
bei WinCommander und anderen explorern ist jedoch oft so dass diese ebenfalls über die WinApi's mit dem WinExplorer kommunizieren und deshalb den ordner trotzdem nicht so einfach öffnen können. ob dies bei allen so ist weiß ich allerdings noch nicht.
verwendet man z.b. aber andere betriebssystem (außer windows) ist der ordner natürlich trotzdem ein offenes buch.
großer vorteil meiner methode ist nur das der ordner samt dateien nicht in eine datei gewandelt werden muss, sondern immer noch ein ganz normaler ordner bleibt. ich denk das dies von der sicherheit her für standard user ausreicht.
-
soulbug schrieb:
großer vorteil meiner methode ist nur das der ordner samt dateien nicht in eine datei gewandelt werden muss, sondern immer noch ein ganz normaler ordner bleibt. ich denk das dies von der sicherheit her für standard user ausreicht.
huh? wie hast du sichergestellt, dass dein programm nicht beendet wird?
-
mein "programm" (DLL) wird nur vom Explorer aufgerufen wenn ein passwortgeschützter ordner aufgerufen wird ... tötest du mein programm tötest du somit in gewisser hinsicht den explorer selbst
-
soulbug schrieb:
mein "programm" (DLL) wird nur vom Explorer aufgerufen wenn ein passwortgeschützter ordner aufgerufen wird ... tötest du mein programm tötest du somit in gewisser hinsicht den explorer selbst
vermutlich hast du dich dann auch selbst aus der registry ausgesperrt, damit du die nötigen einträge für shell extensions nicht löschen kannst
-
Also sothis_ hat vollkommen Recht, so eine externe Lösung ist einfach viel zu leicht zu umgehen, das wollte ich mit dem WinCommander Beispiel ja schon andeuten. Das wäre natürlich nur die allereinfachste Lösung gewesen.
Also keine Bange, ich will Dein Vorhaben nicht schlecht reden, aber ich denke halt nur, dass es nicht zu mehr reichen wird als seinen 10-jährigen Bruder der keinen Plan von Windows hat nicht zu ermöglichen seine Pornosammlung zu finden.
Aber wie auch immer, ein Gutes haben solche Dinge trotzdem immer, man hat wieder was gelernt.Bis denn.
-
soulbug schrieb:
bei WinCommander und anderen explorern ist jedoch oft so dass diese ebenfalls über die WinApi's mit dem WinExplorer kommunizieren und deshalb den ordner trotzdem nicht so einfach öffnen können. ob dies bei allen so ist weiß ich allerdings noch nicht.
Quark. Solche Programme verwenden normale Dateizugriffsfunktionen (FindFirstFile, FindNextFile) zur Anzeige von Ordnern. Mit dem Explorer wird da überhaupt nicht kommuniziert. Solange Du also keinen Dateisystemfilter schreibst, kann jeder Hein Blöd auf die "geschützten" Ordner zugreifen. Und sei es mit cmd.exe.
Ansonsten frage ich mich, warum Du überhaupt noch andere Vorschläge willst, wenn Deine Lösung doch so gut funktioniert.
-
ich seh schon eure ironie ist nicht zu überhören .. ihr habt ja auch (teils
recht.
1. bei WinCommander hab ichs noch nicht getestet ... bei total commander funktionierts
2. 90% der user wissen gar nicht was die registry ist oder gar wie man eine shell extension deregegistriert
3. woher kriegt FindFirstFile überhaupt die informationen welche dateien sich in einem verzeichnis befinden?
4. wie möchtest du bitte dateisystemfilter schreiben?
-
Die Lösung von Shell32 bleibt interessanter weise außer acht.
Wobei das doch ein ziemlich guter weg ist. Hab eben selber mal probiert
und man kann damit wunderbar Ordner vor dem Zugriff schützen.
-
welche lösung meinst du? meine oder eine andere oder ...?
-
Er sagt glaube ich nicht umsonst, die Lösung von Shell32...
Also meint er wahrscheinlich diese:SECURITY_DESCRIPTOR* psd = (SECURITY_DESCRIPTOR*)malloc(SECURITY_DESCRIPTOR_MIN_LENGTH); InitializeSecurityDescriptor(psd, SECURITY_DESCRIPTOR_REVISION1); ACL* pDacl = (ACL*)malloc(sizeof(ACL)); InitializeAcl(pDacl, sizeof(ACL), ACL_REVISION); SetSecurityDescriptorDacl(psd, TRUE, pDacl, FALSE); SetFileSecurity(TEXT("c:\\test"), DACL_SECURITY_INFORMATION, psd); free(pDacl); free(psd);
-
vll wärs dann gut wenn man sich ein wenig deutlicher ausdrücken würde weil hier alle lösungen auf shell32 sind ^^
-
soulbug schrieb:
vll wärs dann gut wenn man sich ein wenig deutlicher ausdrücken würde weil hier alle lösungen auf shell32 sind ^^
Was für ein Komiker
-
vll sollt ich geld dafür verlangen, dass ihr euch amüsiert ^^ ... sry wegen vorher ... hab übersehen das der kollege den nick shell32 hat
-
soulbug schrieb:
vll sollt ich geld dafür verlangen, dass ihr euch amüsiert ^^ ... sry wegen vorher ... hab übersehen das der kollege den nick shell32 hat
Gute Idee. Das würde Dich sehr schnell sehr reich machen.