DirectorySecurity C# 从远程服务器分配本地组的权限
DirectorySecurity C# assign permissions of local group from remote server
我正在使用以下代码将域组权限分配给 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上的安全组,但是以在server 001上执行的程序为例,添加server002的"Guests"本地组,但是action将该组添加到文件夹的 ACL 必须从服务器 001 上 运行 的 C# 程序执行。
有人可以告诉我如何实现吗?
我找到了另一种应用权限的方法。我使用 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);
}
因此,您可以通过这种方式遍历变量服务器,以 运行 在您想要的所有服务器上执行命令。这种方法对我有用。
我正在使用以下代码将域组权限分配给 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上的安全组,但是以在server 001上执行的程序为例,添加server002的"Guests"本地组,但是action将该组添加到文件夹的 ACL 必须从服务器 001 上 运行 的 C# 程序执行。
有人可以告诉我如何实现吗?
我找到了另一种应用权限的方法。我使用 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);
}
因此,您可以通过这种方式遍历变量服务器,以 运行 在您想要的所有服务器上执行命令。这种方法对我有用。