使用C#阻止对目录的访问

时间:2010-02-27 21:17:04

标签: c# directory access-control

我正在尝试创建一个类似于Folder Lock的程序,它阻止用户访问特定文件夹。我尝试使用DirectorySecurity类和AccessRules来更改文件夹的AccessControl。

但是,通过转到“安全选项卡”并更改权限,可以轻松更改我指定的设置。

是否存在阻止访问目录的安全方法?

4 个答案:

答案 0 :(得分:3)

我想my answer这个问题:“How could I prevent a folder from being created using a windows service?”可能就是你需要做的事情来实现你想要的东西:

  

不幸的是我什么都不知道   足够关于如何帮助你,   但我很确定你需要的   写或获得File System Filter Driver可以   与您的Windows服务进行通信   告诉它有人尝试过   创建一个目录/文件,以便   您的服务可以做出决定   它。这种方式当某人/某事   尝试创建文件或文件夹   那是不允许的   返回“拒绝访问”或其他   您选择的Win32错误。

     

如果你确实走了使用路线   一个司机,我猜它仍然是最好的   做重要的决定是否   在...的创建/修改   服务,即在内核模式之外。

答案 1 :(得分:1)

只要用户是目录或文件的所有者,他就可以更改权限。您必须更改目录的所有权才能真正保护目录(并且要求更改所有权需要管理权限)。 但具有管理员权限的用户始终可以取回所有权。

如果您在企业中且人员不是其计算机的管理员,则可以编写以域管理员身份运行的Windows服务并进行必要的更改。在家庭环境中,没有办法。

答案 2 :(得分:1)

有两件事可以否决本地管理员的权利。

  • 域名政策(但您的电脑必须是域名成员)
  • 在SYSTEM权限(例如驱动程序)下运行的进程,这是病毒扫描程序和rootkit工作的方式,它们在结果到达用户之前分析文件系统请求,并在必要时拦截它。

但是你不能用c#做第二个选项,第一个选项更像是Active Directory配置解决方案。

答案 3 :(得分:0)

不,您无法阻止计算机管理员帐户访问或取得任何文件夹的所有权。

您可以阻止受限制的帐户(如您所述),但管理员始终可以更改安全设置。