COM+的问题(救救我!)分不够在加 各位前辈小弟初学COM+,编写了一个最简单的例子,在本机上客户端使用正常,可把客户端放到其它计算机上运行(不再同一个域下),就会报错。错误信息是”interface not supported“。各位前辈帮帮忙。分不够在加 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 源码:服务器部分:unit Unit2;{$WARN SYMBOL_PLATFORM OFF}interfaceuses ComObj, ActiveX, MYEasyCOM_events_TLB, StdVcl,Forms,Windows,MMSystem;const Hell='你好';type TMYEasyCOM = class(TAutoObject, IMYEasyCOM) protected procedure SendShow(const Msg: WideString);safecall; end;implementationuses ComServ;procedure TMYEasyCOM.SendShow(const Msg:WideString);begin Application.MessageBox(PChar(String(Msg)),Hell,MB_ICONINFORMATION);end;initialization TAutoObjectFactory.Create(ComServer, TMYEasyCOM, Class_MYEasyCOM, ciMultiInstance, tmNeutral);end.客户端部分:unit App;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, MYEasyCOM_events_TLB, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } MyEasyCom:IMYEasyCOM; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin MyEasyCom:= CoMYEasyCOM.CreateRemote(Edit1.Text); MyEasyCom.SendShow('你好我是张弦');end;end. 客户端机器的登录名必须是应用服务器的用户。你可以用DCOMCNFG配置一下,让客户端用访问的权限。在服务端为每个客户端分发访问COM的权限后,应该就可以了COM+一个重要问题僦是如何正确在服务器中分发各种客户访问的权限。具体你可以1。把组件的属性页内的“安全性“内的身份验证级别设为“无“,把模拟级别设为“匿名”。2。把服务器的登陆用户名和密码改称和和客户端一样的用户名和密码。 在给个抄的总结方法:1、如果你的系统在一个域中,你将不会出现那个问题2、如果你的系统在工作组中,请将你客户端的WINDOWS登录口令设为空,如果不行,再将服务端的口令设为空 我刚才试过了还是抱错,出错信息没有变。我测试的俩台计算机都在WorkGroup中。是不是需要导出一个客户端呢?我该如何把我的COM+服务器正确的分发给各种客户访问呢? 你没有在服务器端注册你的COM+ regsvr32命令 http://support.microsoft.com/default.aspx?scid=FH;ZH-CN;complusfaq#4http://community.csdn.net/Expert/topic/3170/3170015.xml?temp=.4227411 求助,FTP+语音文件播放,怎么实现? 我的工程管理器老提示错误! delphi 发送邮件时 为什么只能发送163的别的不行? 为何ADOQuery执行Append、post后,数据库中没有记录呢? IntraWeb如何和数据库连接 delphi原代码 遗传算法解决最短路径问题! fastReport中可以选择的Query太多了,我可以屏蔽一些吗? 哪里有Delphi 数字图象处理的资料了? 关于导入Excel问题 用Delphi如何写ASP组件 关于Arcobat和Photoshop启动界面的制作? 疑惑,难道borland的delphi程序员都不用代码缩进?
服务器部分:
unit Unit2;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
ComObj, ActiveX, MYEasyCOM_events_TLB, StdVcl,Forms,Windows,MMSystem;const
Hell='你好';type
TMYEasyCOM = class(TAutoObject, IMYEasyCOM)
protected
procedure SendShow(const Msg: WideString);safecall;
end;implementationuses ComServ;
procedure TMYEasyCOM.SendShow(const Msg:WideString);
begin
Application.MessageBox(PChar(String(Msg)),Hell,MB_ICONINFORMATION);
end;initialization
TAutoObjectFactory.Create(ComServer, TMYEasyCOM, Class_MYEasyCOM,
ciMultiInstance, tmNeutral);
end.
客户端部分:
unit App;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, MYEasyCOM_events_TLB,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
MyEasyCom:IMYEasyCOM;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
MyEasyCom:= CoMYEasyCOM.CreateRemote(Edit1.Text);
MyEasyCom.SendShow('你好我是张弦');
end;end.
在服务端为每个客户端分发访问COM的权限后,应该就可以了
COM+一个重要问题僦是如何正确在服务器中分发各种客户访问的权限。具体你可以
1。把组件的属性页内的“安全性“内的身份验证级别设为“无“,
把模拟级别设为“匿名”。
2。把服务器的登陆用户名和密码改称和和客户端一样的用户名和密码。
1、如果你的系统在一个域中,你将不会出现那个问题
2、如果你的系统在工作组中,请将你客户端的WINDOWS登录口令设为空,如果不行,再将服务端的口令设为空
我该如何把我的COM+服务器正确的分发给各种客户访问呢?