我们有一个程序启动一个托管本地 COM 服务器的子进程,由于各种原因必须提升启动。只要父进程和子进程都被提升,一切都可以正常工作。
但是,我们也希望在父进程未提升时运行。启动子进程会产生一个 UAC 对话框(这是可以接受的),并且子进程似乎正确启动并成功调用了 CoRegisterClassObject
。但是,父进程在调用具有相同 CLSID 的 CoCreateInstance
时获取 REGDB_E_CLASSNOTREG。
我认为这是某种权限问题。如何在提升的服务器中注册我的类以允许从非提升的进程调用它?
最佳答案
阅读The COM Elevation Moniker了解几种访问提升的进程外服务器的方法。
关于c++ - 从非提升的进程连接到提升的 COM 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2509969/