(C#)如何检查路径是否是Windows中需要提升修改的受保护路径?

时间:2009-05-07 20:58:35

标签: c# uac protected-folders

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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