我正在使用以下代码将域组权限分配给C#应用程序中的文件夹:
DirectoryInfo myDirectoryInfo = new DirectoryInfo(@"\\Server002\G$\permissionTest");
DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl();
myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(@"Domain\Sec_Group", FileSystemRights.Modify, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
myDirectoryInfo.SetAccessControl(myDirectorySecurity);
例如,我正在名为server001的服务器上执行该程序,并使用该代码将域组应用于名为server002的服务器上的文件夹的ACL,并且工作正常。
现在我需要将server002上的安全组添加到该文件夹,但是使用在服务器001上执行的程序,例如,添加server002的“Guests”本地组,但添加该组的操作必须从服务器001上运行的C#程序执行文件夹的ACL。
有人可以告诉我如何实现这个目标吗?
答案 0 :(得分:0)
我找到了另一种应用权限的方法。我使用psexec程序运行远程命令,所以我能够远程调用所需的服务器并运行icacls命令来应用权限,然后我将命令放在C#上执行指令。我做的代码看起来像这样:
foreach (string server in servers)
{
string localPermissionsCommand = @"/C psexec /accepteula \\" + server + " icacls " + @"G:\theFolder\ /grant " + @"""Local server group""" + ":(OI)(CI)RX";
System.Diagnostics.Process.Start("CMD.exe", localPermissionsCommand);
}
因此,通过这种方式,您可以遍历变量服务器,以在所需的所有服务器上运行该命令。这种方法对我有用。