2009-08-14 19 views
3

Das scheint mir seltsam. Ich benutze FolderBrowserDialog, um einen Ordner auszuwählen, der das Ziel einer Reihe von Dateien sein wird. Jedes Mal, wenn Sie einen Ordner im Dialogfeld erstellen und auswählen, scheint der resultierende Ordner immer schreibgeschützt zu sein, wenn ich den Ordner anschließend im Explorer anzeige.Hinzufügen eines neuen Ordners in FolderBrowserDialog

Ich habe die Dokumentation für die FolderBrowserDialog.ShowNewFolderButton Eigenschaft überprüft, aber ich sehe nichts über die Zugriffseinstellungen für den Ordner, noch habe ich eine Möglichkeit sehen, die Zugriffseinstellung auf den Ordner zu ändern.

Sie würden denken, das wäre einfach. Hat jemand Ideen?

+0

ist es gleichgültig, wo der Ordner erstellt wird? Lokales Laufwerk oder Netzwerklaufwerk zum Beispiel. – MartW

+0

Ich glaube nicht, dass das das Problem ist. Wie Gjutras vorgeschlagen hat, erbt es die Berechtigungen des übergeordneten Ordners. – Valentein

Antwort

1

Ich fand, dass DirectorySecurity.SetAccessControl Methode meine Bedürfnisse erfüllt:

  DirectoryInfo dirInfo = new DirectoryInfo(this.destinationText.Text); 
      DirectorySecurity dSecurity = dirInfo.GetAccessControl(); 
      dSecurity.AddAccessRule(
         new FileSystemAccessRule("SYSTEM", 
                FileSystemRights.FullControl, 
                AccessControlType.Allow)); 
      dirInfo.SetAccessControl(dSecurity); 
1

Die im Dialogfeld erstellten Ordner erben die Berechtigungen des übergeordneten Ordners. Wenn Sie das Parent Read Only und das Kind nicht nur lesen möchten, müssen Sie einen Filewatcher verwenden, um nach neuen Verzeichnissen zu suchen und die schreibgeschützten Attribute zu ändern, wenn ein neuer Ordner angezeigt wird.

+0

Das Erben der übergeordneten Ordnerberechtigungen scheint korrekt zu sein. Ich bin mir im Moment nicht sicher über den Dateiwächter, aber die Antwort hat das Grundproblem gelöst. Aber wie ändert man das schreibgeschützte Attribut für einen Ordner in .NET? – Valentein

Verwandte Themen