如果软件升级为uac (c++),则无法在资源管理器中访问远程共享

Cant access remote share in explorer if software is elevated uac (c++)

本文关键字:资源管理器 访问 共享 程共享 软件 uac 如果 c++      更新时间:2023-10-16

如果我的软件以管理员权限运行,则访问资源管理器中映射的network share drives有问题。如果我禁用UAC,它运行良好,所以我可以枚举所有的网络驱动器映射到资源管理器。

我的问题是:当UAC打开时,我如何访问该网络驱动器或枚举它们?

我尝试在注册表中更改:LocalAccountTokenFilterPolicy,但它不起作用。

解决方案吗?

致以亲切的问候
Xen

问题不是UAC本身,也不是以管理员权限运行。最有可能的问题是您在不同的用户帐户下运行。"以管理员身份运行"将执行此操作。

每个用户帐户都有自己的网络共享。因此,当您作为不同的用户运行时,您将枚举不同的共享。尝试以不同的用户运行Explorer.EXE;你会看到Explorer.EXE会找到与你相同的共享。

这在设计上是不容易解决的。当每个用户帐户只能访问它真正需要的驱动器和共享时,恶意软件的传播要困难得多。

正确的解决方案可能是不以UAC/Administrator权限运行。如果你真的,真的需要,它可能是一个单一的管理任务。应该将该任务移动到单独的流程中,并且只应该提升该流程。以时钟应用程序为例,它过去可以显示和更改时间。但在现代Windows版本中,更改时间是由一个单独的提升进程完成的。