我有一个存储目录中的某些文件的Windows应用程序。 我想知道是否有在.net中,我可以限制用户不能以直接访问该对象(即使只去到该目录中的窗户,并抓住文件)的方式所以只有我的应用程序可以添加/验证/删除文件在该目录中。
Answer 1:
你可以使用.NET中的独立存储? 虽然,它不一定限于从您的用户望而却步,可能要困难得多找到....(下本地设置存储\应用程序数据\用于隔离存放登录的用户)
通过代码通过使用/导入System.Io.IsolatedStorage使用它,然后你可以创建目录,文件等..正常。
你也不必跟踪实际的目录就可以了是在为净管理这个HD。 也许一个不错的加分。
Answer 2:
这仅仅是可能的,如果您的应用程序比运行应用程序的用户不同的凭据运行。
默认情况下,所有的应用程序与谁发动的过程中,用户的凭据运行。 这意味着应用程序具有相同的目录和文件限制的用户。 如果没有不同的帐户,应用程序只能减少它的访问文件系统的能力,而不是增加。
与文件系统处理一般是邪恶的。 即使你能得到用户不在该目录中玩你仍然不能相信结果会在完全相同的状态,你离开了他们。 这有可能为其他用户,物理磁盘损坏或任意数量的其他东西损坏您的文件。
文件系统三立程序的唯一方法是期望从一开始就失败,你就算幸运的,当它的实际工作。
Answer 3:
该应用程序需要特定的用户运行 - 而该用户将始终具有同样的权利,你的应用程序。 您可以潜在地使运行作为管理员阻止标准用户访问目录服务,但管理员仍然能够更改目录的东西。
我建议你找另一种方法对您的问题。 有可能的替代品 - 也许你应该考虑保持某种类型的加密哈希对目录内容。 这将至少让你确认内容并没有改变,但它不会阻止发生变化。
Answer 4:
正如其他人所说,你需要的应用程序作为一个不同的用户比当前登录的人。你应该看看“模拟”,这里有一些链接,可以让你开始让您的应用程序作为一个不同的用户时,执行某些任务:
http://csharptuning.blogspot.com/2007/06/impersonation-in-c.html
http://www.codeproject.com/KB/cs/cpimpersonation1.aspx
Answer 5:
最简单的(但不以任何方式保护)的方法,是使用一个隐藏的文件夹,用户一无所知。 所以\服务器\ hiddenfiles $
一个更安全的替代方法是更改程序用来访问该文件夹的凭据。 是否有必要为他们访问它自己呢?
另一种方法是为每一个用户,他们不知道密码创建一个虚拟帐户。 使其与他们的Windows登录,那么域\ MYNAME变得域\ mynamehidden。 然后用它来连接到目录。
这将确保一切都可以很好地被审计过。
Answer 6:
看看FileSystemWatcher的 - 它不从目录更改阻止,但允许以通知程序有关目录的变化。