C++ IFileOperation在何处实施(我如何验证这一点)?

C++ IFileOperation在何处实施(我如何验证这一点)?,c++,winapi,com,windows-7,C++,Winapi,Com,Windows 7,我正在试图找出Windows 7中在哪里实现了IFileOperation。 据我所知,它在shell32.dll中 因此,我使用dll导出查看器(来自NirSoft)检查了shell32.dll中的所有COM对象,但IFileOperation不在其中 我在注册表中搜索了CLSID_FileOperation{3ad05575-8857-4850-9277-11b85bdb8e09},发现(据我所知)它在shell32.dll中 但是,如果我用DLL导出找不到COM导出,那怎么可能呢?DLL不

我正在试图找出Windows 7中在哪里实现了
IFileOperation
。 据我所知,它在shell32.dll中

因此,我使用dll导出查看器(来自NirSoft)检查了shell32.dll中的所有COM对象,但IFileOperation不在其中

我在注册表中搜索了
CLSID_FileOperation
{3ad05575-8857-4850-9277-11b85bdb8e09},发现(据我所知)它在shell32.dll中


但是,如果我用DLL导出找不到COM导出,那怎么可能呢?

DLL不需要导出任何特殊的东西来实现该接口。注册表告诉操作系统实现接口的DLL。当程序调用CoCreateInstance时,操作系统可以在注册表中查找给定的CLSID。然后,操作系统加载关联的DLL并调用其
DllGetClassObject
函数以获取
IClassFactory
对象。然后,操作系统使用该接口获取实现所请求接口的内容。

我将使用Python中
ctypes
中的
IFileOperation
来获取Windows复制对话框。DLL没有被导出是否意味着我不能从Python中使用它?@Jay-您需要将其作为COM对象加载,您可以在问题中详细说明吗?不确定它是如何完成的..没有DLL被导出。函数从DLL导出。您可以像操作系统那样加载DLL,获取DllGetClassObject,调用它获取IClassFactory,然后使用它获取您真正想要的接口。但是,pythoncom模块似乎已经完成了这项工作,所以我不知道您为什么不直接使用它。@RobKennedy我不想携带依赖项,它似乎有自己的依赖项。如果可能的话,我想知道用Python实现它的“普通”方法