Hallo,
ich hab da mal wieder ein kleines Problem...
Ich will ein Proggi basteln, dass Profilordner von Servern löscht.
Das Problem, dass sich da bietet ist, dass der Nutzer unter dem das Proggi läuft (DomänenAdmin) nicht der Besitzer der Verzeichnissen ist, sondern ja der Nutzer selbst.
Der Admin kann den Besitz aber übernehmen.
Nur wie mache ich das im Code?
mein Ansatz war:
DirectoryInfo info = new DirectoryInfo(path);
DirectorySecurity dirSec =
new DirectorySecurity(info.FullName, AccessControlSections.Owner);
dirSec.SetOwner(new NTAccount("domain\\Administrator"));
info.SetAccessControl(dirSec);
Wenn ich die DirectorySecurity zuweisen will, kommt eine Exception, dass ein nicht autorisierter Vorgang ausgeführt wurde.
Was mache ist falsch?
Die DirectoryInfo ist über UNC Pfad gebunden, liegt es daran?
DANKE
MFG Veasel
okay..
ich habs mal lokal mit dem Temp Ordner versucht.
also grundsätzlich funktioniert das...bis auf, dass man das rekursiv in allen Verzeichnissen machen muss... 😮(
Kann ich dann meine Anwendung noch irgendwie andere Rechte zuweisen, also in einem anderen Context laufen lassen. Aber wenn ich sie als DomänenAdmin starte, müsste das doch reichen oder nicht?
und der DomänenAdmin darf auch den Besitz des Ordners übernehmen!
Hilfe...
ich versteh das nicht...
MFG Veasel
okay... an den UNC Pfaden schein es nicht zu liegen, hab es mal lokal mit UNC probiert und es klappt (\pc\c$\temp)
Aber wenn ich es auf dem Server mit dem Admin versuche kommt immernoch diese Fehlermeldung.
nichtautorisierter Vorgang
PS:
ich glaub ich weis warum!
weil der admin keine rechte auf den Ordner hat...aber da beisst sich doch die katze in den schwanz, oder?
wie soll ich denn ein DirectorySecurityObject holen um Rechte zu setzen wenn ich keine Rechte habe... ???
HILFE!!
MFG Veasel
weis denn keiner Rat??
Schade...
warum frag ich bloß immer so schwierige sachen...? 😮)
MFG Veasel
Hallo veasel,
viel kann ich dir auch nicht weiter helfen. Aber das Recht, den Besitz zu übernehmen, ist ein eigenes Recht und man kann es haben, ohne sonst irgendwelche rechte an der Datei zu haben. Insofern beißt sich nichts in den Schwanz.
herbivore
danke für die Antwort...
ja das weis ich auch
das heißt auch irgendwas mit ...OwnerPrevelege... oder so...
der fehler kommt ja auch nicht wenn ich den besitzer setzen will, sondern schon wenn ich mir das DirectorySecurity Object holen will.
ich lasse das Proggi aber unter dem DomänenAdmin laufen und der darf den Besitz übernehmen...
wenn ich das mit der Maus mache, geht das ja wunderschön...
kann ich meiner Anwendung noch irgendwie sagen, dass sie unter einem bestimmten nutzer läuft oder bestimmte nutzerrechte hat?
MFG Veasel
Ja das geht, ob das aber programmgesteuert geht weiss ich leider nicht. Ansonsten kannste Dir eine Verknüpfung erstellen und dort dann den gewünschten User angeben.
Hallo veasel,
wenn du das Programm als Admin startest, sollte das reichen.
Es gibt aber zwei Arten von Berechtigungen, die gegeben sein müssen. 1) Benutzerberechtigungen (die hast du, denn es geht ja mit der Maus) und 2) Codezugriffsberechtigungen, also dass der Code das auch machen darf.
Siehe auch [Gelöst] Absoluter Pfad in C# ?
herbivore
hey herbivore,
ja die CAS muss ich doch zum beispiel einstellen wenn ich die anwendung aus dem lan starte (.NET Configuration) aber das mach ich doch gar nicht...oder muss ich auch was einstellen wenn die anwendung im lan was machen will?
also im LAN auf eine Datei zugreifen will.
das ganze mache ich ja über UNC pfade...
wie mache ich das denn?
MFG Veasel
Hallo veasel,
der muss ich auch was einstellen wenn die anwendung im lan was machen will?
ich bin auch kein Spezialist für CAS. 😦
wie mache ich das denn?
Wie und wo du die Berechtigungen einstellst, findest du über die Links in meinem Link.
herbivore
Also ich muss das Problem nochmal aufgreifen...
ich habe immernoch das Problem, das diese fehlermeldung kommt...
"Es wurde versucht, einen nicht autorisierten Vorgang auszuführen."
Was soll mir das sagen?
Wie soll ich denn den Besitzer ändern, wenn ich mir nicht das DirecrorySecurity Objekt holen kann?
man find ich das doof... 😁
MFG Veasel