获取活动用户的访问权限

时间:2009-05-26 20:32:00

标签: c# search

我有一个搜索算法,试图解析本地驱动器上目录的位置。如果目录正在搜索其中一个目录的子目录,则该目录显然需要访问系统中存在的其他目录。但是,在这样做的过程中,我一直收到UnauthorizedAccessException。

我想为搜索机制提供活动用户运行时的访问权限,我该怎样才能实现这一点。

1 个答案:

答案 0 :(得分:0)

在大多数情况下,正确答案是你不应该。

您的算法应该捕获UnauthorizedAccessException,接受不允许它在该文件夹中向下导航,并且该文件夹的行为是空的。

这意味着有时您会得到一个答案,当您在技术上确实存在时,您正在寻找的目录不存在。没关系。这是应该的方式。如果您没有权限,则不存在。

受某些其他用户权限保护的文件夹是“私有的”。 “Joe”运行的程序不应该查看属于“Mary”的文件夹。这就是权限的全部要点。

该规则很少有受控制的例外情况。众所周知,无论文件夹权限如何,磁盘备份和防病毒应用程序都需要能够导航整个磁盘。他们通过设置在高权限帐户下运行的服务(可能是“SYSTEM”,也许是别的东西)来实现这一点。它可能是一个持有SeBackupPrivilege的帐户。

如果你真的需要扫描整个磁盘,你可以为你的程序做到这一点,但是对于大多数应用场景你真的不应该。只有像反病毒或备份程序这样的机器级维护应用程序才能获得这种权限。

这不是“过度杀伤”;这是“错误的”。它不符合规则。