【问题标题】:Prevent Access to a directory using C#使用 C# 防止访问目录
【发布时间】:2011-01-21 21:12:54
【问题描述】:

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

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

是否有任何安全的方法来防止访问目录?

【问题讨论】:

  • 我猜因为它有可能被恶意软件严重滥用,所以不可能阻止具有管理员权限的用户访问。
  • 我想知道文件夹锁、MyLockBox 等这些应用程序是如何隐藏文件夹的?谁能给我一些想法?

标签: c# directory access-control


【解决方案1】:

我认为my answer 对这个问题:“How could I prevent a folder from being created using a windows service?”可能是您实现所需要做的事情:

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

如果你确实走上了使用的路线 司机,我想这仍然是最好的 做决定是否 中的创建/修改 服务,即在内核模式之外。

【讨论】:

    【解决方案2】:

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

    如果您在企业中并且人们不是他们机器的管理员,您可以编写一个以域管理员身份运行并进行所需更改的 Windows 服务。在家庭环境中,没有办法。

    【讨论】:

      【解决方案3】:

      有两件事可以推翻本地管理员的权限。

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-21
          • 2019-12-13
          相关资源
          最近更新 更多