向应用程序添加 Microsoft 代理功能

[Microsoft 代理从 Windows 7 开始已弃用,可能在后续版本的 Windows 中不可用。]

若要访问 Microsoft 代理的服务器接口,必须在目标系统上已安装代理。 不支持使用代理的自安装可执行文件(例如尝试复制和注册代理组件文件)以外的安装。 这可确保一致且完整的安装。 请注意,Microsoft 代理自安装文件不会安装在 Microsoft Windows 2000 及更高版本的操作系统上,因为这些版本的操作系统已包含其自己的代理版本。

若要在使用以前的 Microsoft Windows 操作系统在目标系统上成功安装代理,还必须确保目标系统具有最新版本的Microsoft Visual C++运行时 (Msvcrt.dll) 、Microsoft 注册工具 (Regsvr32.dll) 和 Microsoft COM dll。 确保目标系统上包含所需组件的最简单方法是要求安装 Microsoft Internet Explorer 3.02 或更高版本。 或者,可以安装前两个组件,这些组件作为Microsoft Visual C++的一部分提供。 必要的 COM dll 可以作为 Microsoft DCOM 更新的一部分进行安装,可从 Microsoft 网站获取。 可以在 Microsoft 网站上找到这些组件的详细信息和许可信息。

可以采用相同的方式安装代理的语言组件。 同样,可以使用此方法安装可从 Microsoft 代理网站分发的 Microsoft 字符的 ACS 格式。 字符文件会自动安装到 Microsoft 代理 \Chars 子目录。

由于 Microsoft 代理的组件设计为操作系统组件,因此可能无法卸载代理。 同样,如果代理已作为 Windows 操作系统的一部分安装,则代理自安装柜可能无法安装。

安装后,若要调用代理的接口,请使用标准 COM 约定创建服务器的实例并请求指向服务器支持的特定接口的指针。 特别是,COM 库提供了一个 API 函数 CoCreateInstance,该函数创建对象的实例并返回指向对象请求接口的指针。 在 CoCreateInstance 调用或查询接口的后续调用中请求指向 IAgentIAgentEx 接口的指针。

以下代码在 C/C++ 中对此进行了说明。

hRes = CoCreateInstance(CLSID_AgentServer,
                     NULL,
                     CLSCTX_SERVER,
                     IID_IAgentEx,
                     (LPVOID *)&pAgentEx);

如果 Microsoft 代理服务器正在运行,则此函数将连接到服务器;否则,它将启动服务器。

请注意,Microsoft 代理服务器接口通常包括包含“Ex”后缀的扩展接口。 这些接口派生自,因此包括其非 Ex 对应接口的所有功能。 如果要使用任何扩展功能,请使用 Ex 接口。

采用指向 BSTR 的指针的函数使用 SysAllocString 分配内存。 调用方负责使用 SysFreeString 释放此内存。