使用提升权限启动COM(.NET)对象会引发FileNotFoundException

时间:2011-02-11 23:36:49

标签: .net security com uac elevated-privileges

我正在尝试通过MSDN上的COM Elevation Moniker文章中概述的CoGetObject方法启动.NET对象。我开始使用Vista Bridge代码然后偶然发现older sample that shows some of the bits wired up。在这一点上,我试图找出为什么我在调用此方法时抛出FileNotFoundException:

var result = UnsafeNativeMethods.CoGetObject(monikerName, ref bindingOptions, interfaceId);

只有在显示同意提示后才会抛出异常,这很奇怪。我正在使用Windows 7 x64计算机,如果这有帮助并且有posted the full source of my spike

我在这里错过了什么可能导致抛出FileNotFoundException?

2 个答案:

答案 0 :(得分:0)

您是否使用/ tlb开关运行RegAsm.exe以导出并注册COM服务器的类型库?没有注册的类型库可能会导致FileNotFoundException。

答案 1 :(得分:0)

这不是直接的答案,但是您可以使用RunElevatedNet C#示例项目来尝试在提升项目中启动COM服务器。研究在非提升模式下是否还会发生相同的FileNotFoundException错误,可能有助于调试问题。