首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UAC、VirtualStore和dll互操作

UAC、VirtualStore和dll互操作
EN

Stack Overflow用户
提问于 2012-02-22 19:07:18
回答 1查看 263关注 0票数 0

我遇到了一个第三方组件的问题,我必须与C#或C++进行互操作,但无法控制。

情况是这样的:

第三方组件是一种将数据写入“Program Files”文件夹的软件。在Win7中,这意味着对于没有管理员访问权限的用户,此数据将写入配置文件中的虚拟化程序文件文件夹中。我需要通过捆绑的.dll中提供的应用程序接口读取该数据。

当以管理员权限运行第三方工具,并禁用UAC (有效地允许对c:\Program Files的写访问)的框时,我可以使用标准互操作( C++中的LoadLibrary/GetProcAddress或C#中的P/Invoke )从该文件夹读取数据。需要明确的是,在这种情况下,第三方软件和我的工具都使用.dll从C:\Program Files中写入/读取(通过sysinternals的进程监视器进行验证)。

问题是:在启用了UAC的系统上,第三方软件会写入虚拟化文件夹,但我的工具仍然会从C:\Program Files中读取数据,因此我无法读取数据。请注意,我对此没有控制,因为我不能直接读取此数据,我必须通过第三方.dll!所以我想我的问题是:我该怎么做才能让我的程序像第三方组件一样运行,比如在有限的特权下运行时,强制它从VirtualStore中读取?或者我应该以不同的方式来做这件事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-11 17:37:11

对于这种情况,有两种可能的解决方案

按照@Hans Passant

  • 完全禁用

的建议,将UAC部署到与程序文件不同的文件夹中

我们选择了第二个选项,因为第三方工具没有提供更改安装文件夹的脚本化方式:-(

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9393602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档