2013-11-15 152 views
5

好吧,所以我创建了一个C#winforms应用程序。如何限制文件夹/文件只能访问程序?

我想写/二进制数据文件读取。但是,我想将该文件放在某个文件夹中,我不希望任何人能够删除或编辑该文件。我只希望使用该文件的程序能够访问它。

这可能吗?我研究了MSDN的文件安全结构,并在研究它时看到有人抱怨说,如果将文件限制为某个用户,那么该用户可以覆盖权限并使其可编辑。

另外,我想过如何实际工作,考虑到本质上我希望一个进程只能编辑文件,如果进程ID随着时间的推移而打开并关闭,那么这个进程可能会有不同的进程ID。

有什么想法?

+0

'我只希望使用该文件的程序能够访问它。“严重的问题:为什么?除非您充当机器管理员,否则您无法控制用户对自己文件系统的操作。如果您担心应用程序数据的完整性,那么您在使用数据时可以执行其他操作来验证完整性。 – admdrew

+1

嗯,我的想法是,为什么你想要任何人都能够浏览文件,找到一个说“importantData.bin”并打开并开始搞乱它。如果有一件事情搞砸了,那么就像你说的那样,你已经失去了数据完整性。 –

+0

正确 - 所以在这种情况下,您可以构建自己的逻辑(或在线搜索以查找解决方案),只接受“良好”数据。这是比试图以某种方式锁定文件系统更好的方法,这从用户的角度来看是不希望的。 – admdrew

回答

0

如果您有在目标文件系统之前安装,然后安装一些文件权限控制,并从那里走。访问该文件夹的用户至少需要读取权限。

0

在安全组下运行该应用程序,并将权限分配给具有该安全组的文件夹和文件。撤销其他人的访问权并使其只读

1

如果您单独打开程序,则可以在程序运行时阻止文件访问。

但是,程序不运行时,该文件将不再受到保护。所以有人只需要杀死程序就可以访问文件。

为了在程序未运行时保护文件,您需要设置一个用户帐户并为其分配一个只有该程序已知的密码。然后设置文件的权限,以便只有您的用户可以访问该文件。

但是,任何管理员都可以接管文件的所有权,因此即使权限保护也是无用的。

最后,有人甚至可以将硬盘从PC中取出并读取原始数据。

你也可以想想你是否想保护的文件或文件内容。如果文件内容敏感,请考虑加密。

这真的取决于您的需求,选择哪个选项。

+0

感谢您的回复,我并不太担心读取数据的人在这方面不太敏感。我只是不希望有人找到该文件,并且不小心或意图删除它。我会考虑设置用户和帐户权限。这似乎是在这一点上唯一的可能性,并希望没有人接管管理和混乱。如果机器可以访问互联网,这甚至不会成为问题,我只需要设置服务器或其他东西。但他们不... –

+0

如果您有NTFS文件系统,请在程序的可执行文件或DLL上尝试备用数据流。他们几乎看不见。你需要特殊的工具才能看到它们。任何使用这些工具的人都会知道如何获得所有权。 –

0

即使这不能满足您的所有要求,您可以尝试IsolatedStorage(System.IO.IsolatedStorage命名空间)。

How to write and read file in IsolatedStorage

的System.IO.IsolatedStorage命名空间包含类型,允许 创建和使用独立存储的。通过这些商店,您可以阅读 ,并写入较少信任的代码无法访问的数据,并防止可以保存在 文件系统其他位置的敏感信息。数据存储在由 当前用户和代码所在的程序集隔离的隔离专区中。 此外,数据可以按域进行隔离。漫游配置文件可以是 与隔离存储结合使用,因此隔离的商店将 与用户的配置文件一起旅行。 IsolatedStorageScope枚举 指示不同类型的隔离。欲了解更多信息有关 时使用独立存储

-1

很好,我也有同样的问题,我做了一些研究关于这个问题,我发现在的accessPoint数据库或带密码的任何其他微软数据的基础上保护您的信息并且只有一个具有该密码的特定应用程序才有权读取/写入这些信息。

0

Windows 10版本1709介绍Controlled Folder Access。这使您可以将可以修改某些文件夹的应用列入白名单。您无法限制读取权限。