【发布时间】:2013-01-17 21:30:03
【问题描述】:
我在 Excel 中有一个加载项,需要在 HKEY_LOCAL_MACHINE 注册表中存储一些数据。由于 Windows Vista 及更早版本中的 UAC 控件,我添加了一个清单文件。但它只是不工作。我什至在我的解决方案的每个项目中都添加了清单。我的解决方案中有 5 个项目(3 个 VB 项目、1 个 c++ 和 1 个部署)。
我正在使用 VS2005。我将清单文件添加到项目中(将 requestedExecutionLevel 设置为“requireAdministrator”并使用 mt.exe 在构建后命令中嵌入清单。 即使这样,我仍然拒绝访问 HKEY_LOCAL_MACHINE。唯一有效的是当我以“以管理员身份运行”启动 Excel 时。
任何线索可能是什么问题?谢谢。
【问题讨论】:
-
这个不行,只有EXE的manifest会起作用。你不能合理地弄乱 Excel.exe。写入 HKCU 或更改要写入的 HKLM 密钥的安全设置。急需联系微软支持,本站有服务保障。
-
嗨,汉斯,感谢您的快速回答。这正是我的问题。有没有办法在启动 excel 后提升加载项并使 excel 知道该提升? (似乎并非如此)或者唯一的方法是将 Excel 启动为提升?再次感谢
-
不,只能提升一个进程。加载项无法强制提升,它必须处理为 EXE 决定的任何策略。期望用户启动 Excel 提升是不合理的。他们会忘记,Excel 通常是一个备受瞩目的攻击目标。更改注册表项安全设置是最简单且影响最小的解决方法。
-
是的。我完全同意你的观点,最简单的方法是将其存储在 HKCU 中。但我正在存储需要对所有用户可用的数据,而不仅仅是当前用户。有任何想法吗 ?谢谢
-
您可以让加载项检测到它需要提升并让它以适当的提升重新启动 Excel。通过一些技巧,您甚至可以重新加载所有打开的文档...
标签: excel windows-7 visual-studio-2005 add-in uac