限制只能通过.net应用程序使用的目录

我有一个Windows应用程序存储在一个目录中的某些文件。 我想知道是否有.net的方式,我可以限制用户不能直接访问(通过只是去在Windows目录,并抓住文件),所以只有我的应用程序可以添加/validation/删除文件在该目录中。

Solutions Collecting From Web of "限制只能通过.net应用程序使用的目录"

你可以在.Net中使用隔离存储吗? 虽然,它不一定是从您的用户的限制,它可能会很难找到….(存储在本地设置\应用程序数据\隔离存储为登录的用户)

通过使用/导入System.Io.IsolatedStorage您通过代码工作,然后您可以创建目录,文件等…正常。

你也不需要跟踪HD上的实际目录.Net管理这个。 也许是一个很好的加。

这只有在您的应用程序以不同于运行该应用程序的用户的凭据运行时才有可能。

默认情况下,所有应用程序都以启动该进程的用户的凭据运行。 这意味着应用程序与用户具有相同的目录和文件限制。 没有一个不同的帐户,应用程序只能降低其访问文件系统的能力,而不能增加它。

处理文件系统通常是邪恶的。 即使你可以让用户不能在那个目录下玩,你仍然不能相信结果会和你离开的时候一模一样。 其他用户可能会损坏物理磁盘或其他任何数量的文件。

理解程序文件系统的唯一方法是从一开始就期望失败,并且在实际运行时算上自己的幸运。

应用程序需要以特定的用户身份运行,并且该用户将始终具有与您的应用程序相同的权限。 您可以潜在地创建一个以管理员身份运行的服务,以防止标准用户访问目录,但是管理员仍然可以更改目录中的内容。

我建议你寻找你的问题的另一种方法。 有潜在的选择 – 也许你应该考虑在目录内容上保留一些加密散列。 这至少可以让你确认内容没有被改变,尽管它不会阻止改变的发生。

正如其他人所说,你需要的应用程序作为一个不同的用户比目前登录。你应该看看“模拟”,这里有一些链接,可以让你开始让你的应用程序作为一个不同的用户时执行某些任务:

http://csharptuning.blogspot.com/2007/06/impersonation-in-c.html

http://www.codeproject.com/KB/cs/cpimpersonation1.aspx

最简单的(尽管不是安全的)方法是使用一个隐藏的文件夹,用户一无所知。 所以\ servername \ hiddenfiles $

更安全的替代方法是更改​​程序用于访问文件夹的凭据。 他们是否有必要像自己一样访问它?

另一种方法是为每个用户创建一个虚拟账户,他们不知道密码。 使它与他们的Windows登录,所以域\ myname成为域\ mynamehidden。 然后使用它来连接到目录。
这将确保一切都可以很好地审计。

看看FileSystemWatcher – 它不能阻止目录中的改变,但是允许通知程序有关dir的改变。