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

StackOverflow https://stackoverflow.com/questions/837009

  •  10-07-2019
  •  | 
  •  

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

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

有帮助吗?

解决方案

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top