3

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

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

编辑::

Mannnnn ...有没有人提到我提供的“这个” 链接。

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

谢谢。

4

6 回答 6

2

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

加密它。

于 2011-01-31T11:08:03.957 回答
1

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

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

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

具体要防止什么?除了尝试锁定文件之外,可能还有其他方法可以解决此问题。

于 2011-01-31T10:17:20.273 回答
1

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

于 2011-01-31T10:17:42.113 回答
0

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

在MSDN 隔离存储中仔细查看它。您可以使用范围为. 无论如何,每个用户都可以通过文件系统导航到您的applicationData文件夹并手动打开此文件(尽管这是相当意外的)

于 2011-01-31T10:12:40.617 回答
0

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

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

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

于 2011-01-31T10:22:32.100 回答
0

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

于 2016-10-07T05:25:35.953 回答