0

我们有一个文件夹,我们的应用程序可能会在其中读取、写入和创建/删除文件,虽然我们可以默认到一个安全的位置,但我们允许用户选择不同的目录。我们如何检查他们选择的目录是否“安全”?

我们希望在运行时不需要管理员提升,并且此路径将用于应用程序的后续启动,因此我们检查我们的进程当前是否能够写入该位置是不够的,因为它可能是应用程序第一次以管理员权限启动(实际上它是由安装程序启动时,因为安装程序运行提升),如果他们选择受保护的位置,下次他们尝试运行应用程序时,他们将无权访问目录。可能 GB 的持久性数据存储在此位置,因此请求新位置并移动文件并不是理想的解决方案。

4

3 回答 3

1

由于任何文件夹都可以设置管理员认为合适的权限,因此唯一真正的方法是知道它将以哪个用户身份运行(当前登录用户?),然后进行访问检查以查看该用户是否具有对该目录的适当访问。

于 2009-05-07T21:03:03.457 回答
1

任何文件夹不仅可以拥有任何权限,而且可以随时更改,包括在您检查文件和使用文件之间。所以真的,你唯一能做的就是使用一个文件并在它失败时处理异常。

于 2009-05-07T21:20:12.467 回答
0

关于随时更改权限的其他建议是有效的,但在安装时检查仍然比根本不检查要好。

由于第一次运行将被提升,您可能想要做的是启动一个单独的非提升进程来测试该位置,然后原始实例可以继续知道该位置将工作,除非/直到其他人更改权限。

于 2009-05-07T21:29:40.633 回答