C# 正在尝试使用.Net保护windows上的目录

C# 正在尝试使用.Net保护windows上的目录,c#,.net,windows,C#,.net,Windows,我正试图让我的C#程序保护windows计算机上的本地现有目录。出于安全原因,我只希望administrators组中的帐户可以访问此文件夹。现有文件夹是我的程序以前创建的文件夹,将由当前正在运行的用户拥有,因此我需要为管理组添加权限,然后删除当前用户的权限 我可以将管理员组的权限添加到文件夹中,但我不知道如何删除当前用户的权限。我按如下方式授予管理员组权限: DirectorySecurity directorySecurity = new DirectorySecurity(); Ident

我正试图让我的C#程序保护windows计算机上的本地现有目录。出于安全原因,我只希望administrators组中的帐户可以访问此文件夹。现有文件夹是我的程序以前创建的文件夹,将由当前正在运行的用户拥有,因此我需要为管理组添加权限,然后删除当前用户的权限

我可以将管理员组的权限添加到文件夹中,但我不知道如何删除当前用户的权限。我按如下方式授予管理员组权限:

DirectorySecurity directorySecurity = new DirectorySecurity();
IdentityReference adminId = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
FileSystemAccessRule adminAccess = new FileSystemAccessRule(
    adminId,
    FileSystemRights.FullControl,
    InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,
    PropagationFlags.None,
    AccessControlType.Allow);
directorySecurity.AddAccessRule(adminAccess);

// set the owner and the group to admins
directorySecurity.SetOwner(adminId);
directorySecurity.SetGroup(adminId);

Directory.SetAccessControl("path-to-my-directory", directorySecurity);

您需要使用定义的RemoveAccessRule*方法之一删除包含当前用户访问权限的访问规则


或者您可以添加一个访问规则来拒绝对当前用户的访问,但我总是尝试远离拒绝规则。不授予访问权限通常比拒绝访问要好(除非它真的打算完全拒绝访问,如在财务记录或其他敏感信息中)。仅供参考,拒绝访问规则将覆盖所有授权访问规则。

我现在看到了真正的问题。通过将目录安全性设置为全新对象,而不是获取现有的目录安全性并对其进行修改,您已经有效地删除了其他用户的访问权限,但您的目录仍然从父目录获取继承的权限

删除父继承所需的新目录安全对象。你可以通过这个方法来做到这一点。您可以按原样使用上述代码,但在设置目录的访问控制之前,请添加此行

directorySecurity.SetAccessRuleProtection(true, false);

看看我对你的回答。它解释了修改文件系统权限必须编写的代码。如果不执行列出的所有步骤,将无法成功修改文件系统上的权限。

我认为这接近我需要的权限。。。使用您提供的链接中的代码示例,我仍然无法删除当前用户。但是,我认为这是因为目录从其父目录继承了权限。您是否知道如何通过编程禁用此功能?