Folgendes Problem:
Ich möchte die Rechte eines kopierten Ordners ändern, welcher zuvor im Netzwerk von einem Rechner auf den Anderen kopiert wurde.
Folgenden Ansatz hab ich bis jetzt verfolgt:
1. Ansatz: Mit einer Prozedur mittels „Batch“ die Rechte ändern:
cacls "M:\eurouser" /T /P benutzerA":f benutzerB:n benutzerC:f
( Laufwerk M: wurde gemountet, benutzerA und benutzerB bekommen Vollzugriff und benutzerB gar keine Rechte)
Wenn der Befehl lokal ausgeführt wird, ist das kein Problem. Wenn er jedoch vom entfernten Rechner (RechnerB) auf das gemountete Laufwerk ausgeführt wird, werden jedoch die Rechte von RechnerA auf den Ordner gesetzt. Problemlösung mit z.B. „RechnerB/benutzerA:f“ funktionierte leider nicht. Fehler: Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt. (Denke mir die Sicherheit von NTFS lässt dies nicht zu)
2. Ansatz: Direkt mit C#
Schmeißt leider eine Exception ,funktioniert deshalb leider auch nicht 
Noch paar Infos zum Netzwerk: Alle Rechner (PC-Pool mit 27 Rechnern) sind Windows-XP-Clients mit SP3 und gehören keiner Domäne an (soll auch nicht geändert werden).
Hat jemand ne Idee wie man das Problem lösen kann oder paar Hinweise zur Lösung?
Ich möchte die Rechte eines kopierten Ordners ändern, welcher zuvor im Netzwerk von einem Rechner auf den Anderen kopiert wurde.
Folgenden Ansatz hab ich bis jetzt verfolgt:
1. Ansatz: Mit einer Prozedur mittels „Batch“ die Rechte ändern:
cacls "M:\eurouser" /T /P benutzerA":f benutzerB:n benutzerC:f
( Laufwerk M: wurde gemountet, benutzerA und benutzerB bekommen Vollzugriff und benutzerB gar keine Rechte)
Wenn der Befehl lokal ausgeführt wird, ist das kein Problem. Wenn er jedoch vom entfernten Rechner (RechnerB) auf das gemountete Laufwerk ausgeführt wird, werden jedoch die Rechte von RechnerA auf den Ordner gesetzt. Problemlösung mit z.B. „RechnerB/benutzerA:f“ funktionierte leider nicht. Fehler: Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt. (Denke mir die Sicherheit von NTFS lässt dies nicht zu)
2. Ansatz: Direkt mit C#
Code:
private void SetSec(string fld)
{
try
{
DirectoryInfo di = new DirectoryInfo(fld);
DirectorySecurity ds = di.GetAccessControl(AccessControlSections.Owner);
ds.SetOwner(new NTAccount(Environment.UserDomainName, "benutzerA"));
ds.AddAccessRule(new FileSystemAccessRule("benutzerB",
FileSystemRights.WriteData, AccessControlType.Deny));
ds.AddAccessRule(new FileSystemAccessRule("benutzerC",
FileSystemRights.WriteData, AccessControlType.Allow));
di.SetAccessControl(ds);
}
catch
{}
}
Noch paar Infos zum Netzwerk: Alle Rechner (PC-Pool mit 27 Rechnern) sind Windows-XP-Clients mit SP3 und gehören keiner Domäne an (soll auch nicht geändert werden).
Hat jemand ne Idee wie man das Problem lösen kann oder paar Hinweise zur Lösung?