设置 ActiveX 部件的安全级别

可以有两种方法为下载的部件设置安全级别。最容易的方法是用打包和展开向导将 .cab 文件标记为安全。另外还可以用 IObjectSafety 接口告知客户计算机您的代码是安全的。

注意 IObjectSafety 属于高级编码技术,需要对实现这个接口有一定了解,它是面向经验丰富的程序员的。有关该 Implements 接口的详细信息,请参阅《程序员指南》中的“用对象编程”中的“Polymorphism”。

使用打包和展开向导

如果您的部件中没有实现 IObjectSafety 接口,打包和展开向导将使您可以在下载包上设置安全标志。您可以选择“设置脚本安全性”标志、“设置初始化安全性”标志,或两者都有。

注意 如果为某个对象使用了 IObjectSafety 接口,它将不会出现在打包和展开向导的安全设置屏幕中。

详细信息 有关如何使用打包和展开向导对控件打包的信息,请参阅《程序员指南》第十七章“发布应用程序”。

使用 IObjectSafety

IObjectSafety 是一个接口,它可将其功能显露给 Internet Explorer 的“设置脚本安全性”和“设置初始化安全性”安全特性。对具有支持未受托客户(或那些不能预料其特定功能的,或不能确保安全使用的客户)接口的对象,例如脚本,应当实现 IObjectSafety 接口。该接口允许您指定对象的哪一部分需要保护而不被使用。

使用 IObjectSafety 可以将对象及其组成部分标记为以下三类:

可以为您的对象考虑三种方案:

  1. 对象的所有属性和方法总是设置脚本安全性的。在该方案中,您可以通过不在IObjectSafety_SetInterfaceSafetyOptions 接口方法中返回错误来通知客户您的对象设置了脚本安全性。这样就能成功地创建和运行您的对象了。。

  2. 对象永不设置脚本安全性。在这种情况下,您可以通过在 IObjectSafety_SetInterfaceSafetyOptions 接口方法中返回一个错误,E_Fail 来通知客户您的对象不安全。这样就防止了客户通过脚本来访问任何方法或属性了。

  3. 对象上的部分属性和方法,但不是全部,未设置脚本安全性。在这种情况下,您可以通知客户整个对象都不安全,也可以通知客户您的对象是安全的,但禁用不安全的属性和方法。

详细信息 有关 IObjectSafety 接口的详细信息,请参阅http://www.microsoft.com/msdn/sdk/inetsdk/help/compdev/safety.htm 上的 Internet Client SDK。在 Samples 目录中有 IObjectSafety 的示例应用程序。