1

有没有办法使文件夹和/或文件只能由应用程序访问

我记得玩过一个游戏,其中有一个包含资源的大文件,并且只能由应用程序访问。

我正在尝试做同样的事情。

我已经研究过压缩文件夹,但我不想将内容提取到某个位置,除非该位置只能由应用程序访问。

我也研究过加密,有没有办法让整个文件夹或文件保持加密并且让应用程序只能读取它?

我希望应用程序只能访问某些文件。

4

2 回答 2

1

一种选择是使用独立存储。即使用户可以打开在独立存储下物理创建的文件,也很难找到该文件(检查以下示例中的目录是如何创建的)您也可以为创建的存储设置适当的安全策略,其他应用程序无法访问相同文件。

对于桌面应用程序,隔离存储是一种数据存储机制,它通过定义将代码与已保存数据关联的标准化方式来提供隔离和安全性。标准化还提供了其他好处。管理员可以使用旨在操作隔离存储的工具来配置文件存储空间、设置安全策略和删除未使用的数据。使用隔离存储,您的代码不再需要唯一的路径来指定文件系统中的安全位置,并且可以保护数据免受其他仅具有隔离存储访问权限的应用程序的影响。指示应用程序存储区域所在位置的硬编码信息是不必要的。

在隔离存储下创建目录和文件

C#

using (IsolatedStorageFile storage = IsolatedStorageFile.GetStore((IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly | IsolatedStorageScope.User), null, null))
{
    storage.CreateDirectory(@"SampleStorageFolder");
    storage.CreateFile(@"SampleStorageFolder\ReadMe.txt");
}

VB.NET

Imports System.IO.IsolatedStorage
    Using storage As IsolatedStorageFile = IsolatedStorageFile.GetStore((IsolatedStorageScope.Domain Or IsolatedStorageScope.Assembly Or IsolatedStorageScope.User), Nothing, Nothing)
        storage.CreateDirectory("SampleStorageFolder")
        storage.CreateFile("SampleStorageFolder\ReadMe.txt")
    End Using

上面的代码将在独立存储下创建目录和文件,

C:\Users\agarajah\AppData\Local\IsolatedStorage\f1fbq2pf.hsm\dkuvmluc.cgn\Url.q4hqkailhblwbougknr2gnmsmovpnjjc\Url.q4hqkailhblwbougknr2gnmsmovpnjjc\Files\SampleStorageFolder\ReadMe.txt

读取隔离存储下创建的文件

C#

using (IsolatedStorageFile storage = IsolatedStorageFile.GetStore((IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly | IsolatedStorageScope.User), null, null))
{
   using (StreamReader reader = new StreamReader(storage.OpenFile("ReadMe.txt", FileMode.Open)))
    {
       string content = reader.ReadToEnd();
    }
}

VB.NET

Using storage As IsolatedStorageFile = IsolatedStorageFile.GetStore((IsolatedStorageScope.Domain Or IsolatedStorageScope.Assembly Or IsolatedStorageScope.User), Nothing, Nothing)
    Using reader As New StreamReader(storage.OpenFile("ReadMe.txt", FileMode.Open))
        Dim content As String = reader.ReadToEnd()
    End Using
End Using

注意:尝试从另一个应用程序读取相同的文件会导致 FileNotFoundException 出现错误消息“找不到文件‘ReadMe.txt’。”。

于 2013-11-13T06:13:20.167 回答
0

您可以做的第一件事是创建一个应用程序浏览到的隐藏文件夹。

对于加密:对于没有经验的人来说,加密文件似乎是有风险的。不过,您可以对扩展进行某种程度的加密。例如 file.docx --> file.abc

这样你应该不能自己打开它,然后你可以制作一个应用程序来知道哪个“假扩展”与哪个真正的扩展进行比较。

我希望这对你有帮助!

于 2013-11-12T19:11:50.457 回答