Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取指向现有COM对象的指针?_C++_Windows_Com_Credential Providers - Fatal编程技术网

C++ 获取指向现有COM对象的指针?

C++ 获取指向现有COM对象的指针?,c++,windows,com,credential-providers,C++,Windows,Com,Credential Providers,如何获取指向已在同一台计算机上、在不同进程中创建的现有COM对象的指针 我有一个可以创建继承的对象的。ICredentialProvider有一个方法 我还有一个服务,需要从中调用凭证提供程序的SetSerialization方法。问题是,我在C++方面有经验,但我是一个初学者,所以我不知道如何。微软的评论说,可以从“远程客户端”调用SetSerialization方法,但没有解释如何调用——我想他们假定您知道COM 我一整天都在阅读有关COM的各种书籍,我已经到了可以在服务中找到我的凭据提供程

如何获取指向已在同一台计算机上、在不同进程中创建的现有COM对象的指针

我有一个可以创建继承的对象的。ICredentialProvider有一个方法

我还有一个服务,需要从中调用凭证提供程序的SetSerialization方法。问题是,我在C++方面有经验,但我是一个初学者,所以我不知道如何。微软的评论说,可以从“远程客户端”调用SetSerialization方法,但没有解释如何调用——我想他们假定您知道COM

我一整天都在阅读有关COM的各种书籍,我已经到了可以在服务中找到我的凭据提供程序的程度,但是我需要获取一个指向已存在的凭据提供程序对象的指针,而不是创建一个新对象,我无法找到如何创建

怎么做的


谢谢。

正如雷蒙德所说,简而言之,你不能——至少不能通过任何内置的COM功能。如果必须的话,它需要通过某种形式的。

正如Raymond所说,简而言之,你不能——至少不能通过任何内置的COM功能。如果必须,则需要通过某种形式的进行传递。

规范方法是通过。假设对象有一个“名字对象”,即COM名称,并且该名字对象已注册


请注意,ROT是IPC的一种形式,特别是COM对象的系统范围目录。

规范方法是通过。假设对象有一个“名字对象”,即COM名称,并且该名字对象已注册


请注意,ROT是IPC的一种形式,特别是COM对象的系统范围目录。

您不能只是从随机进程中窃取指针。您必须安排将凭据提供程序交给服务。但是让我们后退一步。为什么要调用ICredentialProvider::SetSerialization?如示例所示,该方法适用于远程桌面客户端,因此它可以在连接时预填充“以…身份登录”对话框。不清楚您的服务为什么需要这样做。@RaymondChen:“您必须安排将凭据提供程序交给服务”-是的,这正是我需要的,但不知道在COM世界中如何做到这一点。场景是:我们有“x”数量的机器由“讲师”机器控制,通过命名管道与远程机器上运行的服务通信。教员需要能够通过按下教员机器上的一个按钮锁定/解锁所有远程机器。我的印象是,当讲师要求时,我可以从服务中调用SetSerialization来自动登录远程机器。因此,可能看起来我一直在白费力气,我必须通过某种形式的IPC将凭据从服务传递给凭据提供商,可能是另一个管道?您需要在凭据提供程序和服务之间设置一些IPC。但是退一步:即使你得到了指针并且想调用SetSerialization,你会传递什么?(注意:我也不知道。)@RaymondChen:我想我会通过管道将用户名和密码发送给凭证提供程序,然后让凭证提供程序处理序列化。如果你想在回答中总结你的评论,我很乐意接受。谢谢你的时间。你不能只是到处乱跑,从随机进程中窃取指针。您必须安排将凭据提供程序交给服务。但是让我们后退一步。为什么要调用ICredentialProvider::SetSerialization?如示例所示,该方法适用于远程桌面客户端,因此它可以在连接时预填充“以…身份登录”对话框。不清楚您的服务为什么需要这样做。@RaymondChen:“您必须安排将凭据提供程序交给服务”-是的,这正是我需要的,但不知道在COM世界中如何做到这一点。场景是:我们有“x”数量的机器由“讲师”机器控制,通过命名管道与远程机器上运行的服务通信。教员需要能够通过按下教员机器上的一个按钮锁定/解锁所有远程机器。我的印象是,当讲师要求时,我可以从服务中调用SetSerialization来自动登录远程机器。因此,可能看起来我一直在白费力气,我必须通过某种形式的IPC将凭据从服务传递给凭据提供商,可能是另一个管道?您需要在凭据提供程序和服务之间设置一些IPC。但是退一步:即使你得到了指针并且想调用SetSerialization,你会传递什么?(注意:我也不知道。)@RaymondChen:我想我会通过管道将用户名和密码发送给凭证提供程序,然后让凭证提供程序处理序列化。如果你想在回答中总结你的评论,我很乐意接受。谢谢你的时间,太好了。看起来正是我需要的。不过,我已经实现了pipe方法,它现在可以满足我的需要。在这个例子中,我可能不使用ROT方法,但它仍然是我一直在寻找的,很好地了解它以供将来参考。谢谢,太好了。看起来正是我需要的。不过,我已经实现了pipe方法,它现在可以满足我的需要。在这个例子中,我可能不使用ROT方法,但它仍然是我一直在寻找的,很好地了解它以供将来参考。谢谢