Ich habe den folgenden Code, der gut arbeitet, wenn das Anlegen von Ordnern:Set Ordnerberechtigungen
public void CreateFolders()
{
_SharePoint.ClientContext _ClientContext = new _SharePoint.ClientContext("https://sharepoint.oshiro.com/sites/oshirodev/");
_ClientContext.Credentials = new NetworkCredential("user", "pass", "oshiro.com");
var _web = _ClientContext._web;
var _Root = _web.Lists.GetByTitle("Library1");
var _folder1 = _Root.RootFolder.Folders.Add("Folder1");
var _subfolder1 = _folder1.Folders.Add("SubFolder1");
_folder1.Update();
_subfolder1.Update();
var _folder2 = _Root.RootFolder.Folders.Add("Folder2");
var _subfolder2 = _folder2.Folders.Add("SubFolder2");
_folder1.Update();
_subfolder1.Update();
_ClientContext.ExecuteQuery();
}
Ich verstehe, wie die Berechtigungen für alles, was zum Beispiel in einer Bibliothek ändern:
public void ChangeFldPerms()
{
_SharePoint.ClientContext _ClientContext = new _SharePoint.ClientContext("https://sharepoint.oshiro.com/sites/oshirodev/");
_ClientContext.Credentials = new NetworkCredential("user", "pass", "oshiro.com");
_SharePoint.Principal _user = _ClientContext.Web.EnsureUser(@"oshiro\tom");
_SharePoint.List _item = _ClientContext.Web.Lists.GetByTitle("Library1");
var roleDefinition = _ClientContext.Site.RootWeb.RoleDefinitions.GetByType(_SharePoint.RoleType.Reader); //get Reader role
var roleBindings = new _SharePoint.RoleDefinitionBindingCollection(_ClientContext) { roleDefinition };
_item.BreakRoleInheritance(true, false);
_item.RoleAssignments.Add(_user, roleBindings);
_ClientContext.ExecuteQuery();
}
Aber ich don Ich möchte die Berechtigungen für alles nicht ändern. Ich möchte nur die Berechtigungen für die neuen Ordner festlegen, die ich erstelle.
So habe ich versucht, dies:
public void ChangeFldPerms2()
{
SharePoint.ClientContext _ClientContext = new _SharePoint.ClientContext("https://sharepoint.oshiro.com/sites/oshirodev/");
_ClientContext.Credentials = new NetworkCredential("user", "pass", "oshiro.com");
_SharePoint.Principal _user = _ClientContext.Web.EnsureUser(@"oshiro\tom");
_SharePoint.Folder _folder = _ClientContext.Web.GetFolderByServerRelativeUrl("/sites/oshirodev/Library1/Folder1");
var roleDefinition = _ClientContext.Site.RootWeb.RoleDefinitions.GetByType(_SharePoint.RoleType.Reader);
var roleBindings = new _SharePoint.RoleDefinitionBindingCollection(_ClientContext) { roleDefinition };
_folder.ListItemAllFields.BreakRoleInheritance(true, false);
_folder.ListItemAllFields.RoleAssignments.Add(user, roleBindings);
_ClientContext.ExecuteQuery();
}
Aber dieser Code funktioniert nicht in Sharepoint 2010, weil ListItemAllFields
nicht bis Sharepoint 2013
Meine Frage an Sharepoint eingeführt wird, wie richte ich die Berechtigungen für diese Ordner, so dass nur ein bestimmter Benutzer darauf zugreifen kann? Im Idealfall, wenn dies beim Erstellen der Ordner festgelegt werden kann, wäre das großartig. Wenn das nicht möglich ist, sind die Einstellungen nach dem Erstellen der Ordner in Ordnung.
Die Anwendung ist ein WinForm.
Um klar zu sein, haben Sie erwartet, dass dieser Code die Berechtigungen nur für einen Ordner ändert? Es hat eine auskommentierte Zeile, die einen Verweis auf einen Ordner erhält, aber nichts damit macht; Der Rest des Codes ändert explizit die Berechtigung für die Bibliothek und nicht für den Ordner. – Thriggle
Sind Ordner 1, Ordner2 und Ordner3 in Bibliothek1? Dies wird die Berechtigung der gesamten Dokumentbibliothek ändern, nicht von Ordner 1. –
Diese Frage wurde bereits gestellt und gelöst [hier.] (Http://stackoverflow.com/a/29807876/6061907) ------- ---------------------------------------------- –