【发布时间】:2018-07-10 16:38:25
【问题描述】:
我目前正在研究将 com+ 安全上下文设置为:托管 winforms 进程的无。
在 .NET 中,不可能将 CoInitializeSecurity 设置为 Main 之后的第一行代码,为时已晚。据我了解,CLR 已经调用了该方法。
在下面的链接中: http://www.pinvoke.net/default.aspx/ole32.coinitializesecurity
上面写着:
“解决方法是编写一个将调用 CoInitializeSecurity 的非托管“shim”,然后激活并调用托管代码。您可以通过从混合模式 C++ DLL 导出,注册一个托管组件供以下人员使用来完成此操作COM,或使用 CLR 托管 API。”
有人能解释一下吗?应该如何用非托管代码编写(语言无关紧要)
托管应用程序时不时调用 com+ 服务器,我看不到 我应该立即激活界面以通过的任何理由 指向托管代码的指针?
【问题讨论】:
-
您发布的 PInvoke 链接中的代码示例按原样为我工作。您使用的是什么版本的 Visual Studio 和 .NET Framework?另外,请注意您引用的文本下方的更新:引用:“通常......在 CoInitializeSecurity 已经调用时发生(隐式或显式,这无关紧要)。当您使用 Visual Studio 时,它使用所谓的“Visual Studio Hosting已经调用 CoInitializeSecurity 的进程”。关闭 Visual Studio 托管进程并享受乐趣,现在您可以调试调用 CoInitializeSecurity 的应用程序,而不会出现 RPC_E_TOO_LATE 错误。”
-
".. CoInitialize 将
implicitly callCoInitializeSecurity 如果尚未调用..." - 在提供的链接中不正确 .请参考 MSDN doco 以及stackoverflow.com/questions/30560589/…