一个入门级的问题:我想建立一个本地用的对象,为什么IE说“ActiveX交互不安全”?(300分)

  • 主题发起人 主题发起人 章慧
  • 开始时间 开始时间

章慧

Unregistered / Unconfirmed
GUEST, unregistred user!
1。我想建立一个对象来读写本地文件。
于是建立一个VDSDriver的ActiveX Library.
Library VDSDriver;
uses
ComServ,
VDSDriver_TLB in 'VDSDriver_TLB.pas',
Process in 'Process.Pas' {VDSDiskDriver: CoClass};

Exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer;

{$R *.TLB}

{$R *.RES}

Begin
End.
然后用向导添加一个AUTOMATION OBJECT和一个GetInfo方法
unit Process;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
ComObj, ActiveX, VDSDriver_TLB, StdVcl, Dialogs;

type
TVDSDiskDriver = class(TAutoObject, IVDSDiskDriver)
protected
procedure GetInfo(out Info: OleVariant); safecall;
{ Protected declarations }
end;

implementation

uses ComServ;

procedure TVDSDiskDriver.GetInfo(out Info: OleVariant);
begin
ShowMessage('Ok');
Info:='bakayarou!';
end;

initialization
TAutoObjectFactory.Create(ComServer, TVDSDiskDriver, Class_VDSDiskDriver,
ciMultiInstance, tmApartment);
end.
编译。注册。
然后浏览这个页面
<script language=vbscript>
On Error Resume Next
set kao=CreateObject("VDSDriver.VDSDiskDriver")
if err<>0 then
MsgBox("kao not properly installed)
else
call kao.GetInfo(info)
MsgBox(info)
end if
</script>

为什么IE说“ActiveX交互不安全”?能有解决的办法吗?
还有,为什么用同样的方法,创建COM OBJECT的话,不能正确运行呢?
有什么办法能运行呢?
急!
 
是不是IE安全级别设置的太高了?
 
使用的是默认的中,
用中低的话,确实没警报,可是,大家都用的是默认的中,而且那么多本地object,
都没这个警报啊
 
当然不是改安全级别啦
1、可以把你的站点加为可信站点
2、给你的ocx加个数字签名。

DreamTiger:[梦幻心得-1]ActiveX中级测试证书制作方法
http://www.delphibbs.com/delphibbs/dispq.asp?lid=972692

我放了一个包在我的http上: Activex 数字签名.zip
http://xianjun.vicp.net
下载就搞定了, 里面有篇文章。
 
可是我的程序是Dll啊,不是ocx啊。 真的也是这么做?
 
我并非假设用户没有安装,而需要证书来使用户信任啊,而是该dll已被发布了的软件
用regsvr32注册过了的情况啊。

照前辈的方法依葫芦画瓢为dll作了个证书,check的时候也是说根不被信任。
没效果啊。

而且拿IE浏览时还是说“该页上的某些ActiveX可能不安全,...”没有什么不同啊,那个
证书也不会出来。 但是还是多谢多谢,务请告知dll内的object如何不被警告不安全啊
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1290389
去MSDN里面看吧!搜索Safe Initialization and Scripting for ActiveX Controls
里面有答案...
http://www.delphibbs.com/delphibbs/dispq.asp?lid=598335
来自:grhunter, 时间:2001-9-5 22:18:00, ID:612779
这个问题在MSDN上有解说:

http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/safety.asp


来自:goddy, 时间:2001-9-6 13:02:00, ID:613452
HKEY_CALSSES_ROOT/Component Categories/{7DD95801-9882-11CF-9FA9-00AA006C42C4


来自:zhouyufan, 时间:2001-9-7 14:13:00, ID:615231
去MSDN里面看吧!搜索Safe Initialization and Scripting for ActiveX Controls
7DD95801-9882-11CF-9FA9-00AA006C42C4这个值表示你的控件是脚本,初始化安全的



 
IE对创建的COM组件特别警惕
我原来类似功能封装成可视的ACTIVEX控件,然后在网页上设display=none 使起隐藏
这样就从来没有类似提示
 
>>用regsvr32注册过了的情况
这就不是用上面的方法了, 上面的方法只是对没注册的

可以看看MSDN的文档:
http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/safety.asp
英文的,看起来比较慢一些。

其实就是让你的组件支持IObjectSafety接口就行了。
你可以看看AxCtrls.pas里的TActiveXControl代码实现,它就实现了IObjectSafety接口
 
怎么弄成可视的activex啊?
 
后退
顶部