1

我正在使用以下代码将域组权限分配给 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”本地组,但将该组添加到 ACL 的操作必须从服务器 001 上运行的 C# 程序执行该文件夹。

有人可以告诉我如何实现这一目标吗?

4

1 回答 1

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);
        }

因此,通过这种方式,您可以遍历变量服务器以在您想要的所有服务器上运行命令。这种方法对我有用。

于 2016-03-15T13:48:33.617 回答