我正在努力解决奇怪的问题,我想知道是否有人可以帮助我。 在我的程序的某些时候,我喜欢添加对文件夹具有适当权限的安全组。步骤看起来像那样。
我从Microsoft页面
获得了以下代码 public static void AddDirectorySecurity(string DirectoryName, string Group, FileSystemRights Rights, InheritanceFlags iFlag, PropagationFlags pFlag, AccessControlType ControlType)
{
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(DirectoryName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(new FileSystemAccessRule(Group,Rights,iFlag,pFlag,ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity); //
}
添加的过程看起来像:
path = @"\\domain\dfs\folder"
gRDL_RW = "RDL-group-RW"
AddDirectorySecurity(path, gRDL_RW, FileSystemRights.Modify, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow);
它在我的测试环境中工作正常,但是当我想在生产环境中运行它时,我收到错误:
************** Exception Text **************
System.Security.Principal.IdentityNotMappedException: Some or all identity references could not be translated.
at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess)
at System.Security.Principal.NTAccount.Translate(Type targetType)
at System.Security.AccessControl.CommonObjectSecurity.ModifyAccess(AccessControlModification modification, AccessRule rule, Boolean& modified)
at System.Security.AccessControl.CommonObjectSecurity.AddAccessRule(AccessRule rule)
at Program_dev_1.Form1.button1_Click(Object sender, EventArgs e) in c:\Users\?????????\Documents\Visual Studio 2012\Projects\brite_dev_1\brite_dev_1\Form1.cs:line 191
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
“管理员权限”是否存在问题?我在生产环境中拥有上帝的权限。 那是怎么回事?
我觉得由于某种原因,所有那些用户友好的名称,如“FileSystemRights.Modify”都无法翻译。我在测试和prod环境中检查locale,两者都是一样的。
是否可以使用隐藏在这些用户友好名称后面的原始数字?
也许还有另一种方法可以将安全组添加到文件夹中?我真正想要的只是一个有效的解决方案。
答案 0 :(得分:1)
当尝试将组添加到文件夹时,应用程序正在崩溃,因为新创建的组不会立即被所有域控制器知道。在进行其余代码之前,我必须创建一个过程来检查新创建的组是否已在整个属性中同步。在将文件夹权限添加到文件夹权限时,我无法找到指定域控制器的方法。