【问题标题】:How can I lock a file in .net so that only my app can access it?如何锁定 .net 中的文件,以便只有我的应用程序可以访问它?
【发布时间】:2011-01-31 10:02:45
【问题描述】:

我阅读了有关文件锁定的查询,但它们指的是多个文件访问问题或其他问题。对此的通常响应是使用 FileStream.Lock 锁定文件,使用 FileShare.None 和 File.Open 等,但锁定说100 个文件不是一个好的编程习惯,在这些情况下,如果我的应用程序关闭/崩溃,我也不想要锁将被释放,即我希望锁持续存在,只有我的应用程序可以为其他人打开它。

在 msdn 上,我找到了 System.Security,System.Security.AccessControl 命名空间,我相信这些可能会有所帮助。另外,this 文章将阐明我想要什么。

编辑::

Mannnnn...有人引用我提供的“this”链接吗?

好吧...简而言之,我想要一些 PC 安全软件的功能。这会响铃吗...有人用过吗????

谢谢。

【问题讨论】:

  • 访问控制的东西肯定是基于用户的而不是基于应用程序的吗?我想你可以为你的应用程序创建一个用户:/
  • 我不明白。您说您遇到的解决方案不起作用,因为它们不允许您一次锁定 100 个文件,因为这是不好的编程习惯。但是,无论如何,您似乎都想这样做,否则这些解决方案为您工作。是的,当您的应用程序崩溃时,文件锁会被释放;这是设计使然。你的应用听起来很糟糕。
  • 您的链接的答案是“那不可能”。你想自己得到同样的答案吗?

标签: c# .net security file file-locking


【解决方案1】:

这是不可能的。具有足够权限的用户始终可以更改安全设置并运行程序来访问您的文件。因此,请假设您无法停止此操作并专注于程序或用户可以对文件中的数据执行的操作。

加密。

【讨论】:

    【解决方案2】:

    您的要求中有一个基本缺陷,那就是文件系统只有一种防止访问文件的方法,那就是通过 ACL。您可以指定登录系统的用户无权访问这些文件,因此这些文件对他不可用。

    但是,为了让您的程序能够访问这些文件,您需要设置一个“登录”用户才能运行您的程序,当然任何其他配置为以该用户身份运行的程序都会有权访问这些文件。

    其他锁,例如打开文件以进行独占访问,正如您已经发现的那样,仅在程序运行时才有效。如果由于某种原因程序没有运行,那么这些类型的锁就没有到位。

    具体你想防止什么?除了尝试锁定文件之外,可能还有其他处理方法。

    【讨论】:

      【解决方案3】:

      您可以加密文件并将密钥嵌入您的应用程序中。这取决于您所说的“只有我的应用可以为其他人打开它”的意思。

      【讨论】:

        【解决方案4】:

        我会推荐使用 IsolatedStorage 类。在那里您可以存储直接“链接”到您的应用程序的文件。

        MSDN IsolatedStorage 中仔细查看它。您可以使用文件程序集范围。无论如何,每个用户都可以通过文件系统导航到你的applicationData文件夹并手动打开这个文件(虽然这是相当意外的)

        【讨论】:

        • 我想使用 Windows 应用程序从客户端计算机存储在服务器系统上。我希望隔离的存储应该在所有 Active Directory 用户之间共享。有可能吗?
        【解决方案5】:

        您正试图找到一种方法来实现方法(“锁定”文件)而不是实现目标。

        我假设您想要保存一些私有数据,并有选择地向其他应用程序提供对您数据的访问权限。在这种情况下,您需要一个加密的容器,它可以暴露给其他应用程序,例如通过虚拟磁盘(我们的SolFS OS edition 是这种情况下的最佳变体)。

        但是,问题是密钥将保存在应用程序的代码中,理论上可以提取并用于访问容器。实际上,该过程可以变得更复杂,但这不是 100% 的防弹解决方案。

        【讨论】:

          【解决方案6】:

          我认为你想要的东西只能通过使用文件系统微过滤驱动程序来实现。由于许多其他应用程序通过使用通用屏蔽之类的驱动程序来提供此功能,您可以在其中使进程成为受信任的进程,因此只有受信任的进程才能访问该文件/文件夹,而其他应用程序(如文件夹保护)也提供对文件/文件夹的此类权限。

          【讨论】:

            猜你喜欢
            • 2013-01-11
            • 1970-01-01
            • 2016-12-28
            • 1970-01-01
            • 1970-01-01
            • 2018-11-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多