繁体   English   中英

如何在.net中锁定文件,以便只有我的应用可以访问它?

[英]How can I lock a file in .net so that only my app can access it?

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

在MSDN上,我发现System.Security,System.Security.AccessControl命名空间,我相信这些可能help.Also 文章将阐明我想要的一些情况。

编辑::

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

好的......总之我想要一些PC安全软件所做的事情。那敲响了钟声......有人用它吗????

谢谢。

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

加密它。

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

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

其他锁定,例如打开文件以进行独占访问,就像您已经发现的那样只在程序运行时才有效。 如果由于任何原因程序未运行,则这些类型的锁不到位。

你有什么具体的预防措施? 可能有其他方法来处理它而不是试图锁定文件。

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

我认为你想要的东西只能通过使用文件系统minifilter驱动程序。 许多其他应用程序通过使用通用屏蔽等驱动程序来提供此功能,您可以在其中将进程设置为受信任,因此只有受信任的进程才能访问该文件/文件夹,其他应用程序(如文件夹保护)也会在文件/文件夹上提供此类权限。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM