邦助中说的很清楚: 用DCOMConnection->ServerGUID代替ServerName就可避免客户端注册了:Using ServerGUID rather than ServerName to identify the application server is more robust because it does not require the application server to be registered on the client system.注册的值在 xxx_TLB.CPP 中,第三个号 CLSID_My就是:const GUID LIBID_Server0 = {0xE4B83600, 0x1F9A, 0x11D5,{ 0xA1, 0x8E, 0x00, 0x50, 0xBA, 0xAB, 0xA9, 0x4C} }; const GUID IID_IMy = {0xE4B83601, 0x1F9A, 0x11D5,{ 0xA1, 0x8E, 0x00, 0x50, 0xBA, 0xAB, 0xA9, 0x4C} }; const GUID CLSID_My = {0xE4B83603, 0x1F9A, 0x11D5,{ 0xA1, 0x8E, 0x00, 0x50, 0xBA, 0xAB, 0xA9, 0x4C} };在设计时要这样填,就可避免在客户端异机注册DCOM了 DCOMConnection1->ServerGUID="{E4B83603-1F9A-11D5-A18E-0050BAABA94C}";
to thorhua(thor):这个问题终于弄明白了,非常感谢thorhua(thor)的提示,请你在 下面的贴子上留言,就便给你加分! http://www.csdn.net/expert/topic/128/128972.shtm
to pipai(我是屁派) : 这个注册问题,我又试了一上午,在ServerGUID上填上ProgID, 只能保证NT有帐号的用户可以,但无帐号的用户仍出现: Interface not support(接口不支持)why ????怎么办? 他不给分,我可以给分,帖子 http://www.csdn.net/expert/topic/128/128972.shtm
估计还是号的问题: 有三个号的, Interface not support,是接口号没注册的问题!
首先,最好用ServerGUID(原因BCB已说),客户机只需填写TDCOMConnection的ComputerName和ServerGUID即可,这样客户机不需注册,只需服务器端注册 为了使无账号用户也能访问,按以下步骤设置: 1、运行dcomcnfg.exe, 应用程序-->“你的Server程序”的属性-->安全性-->选择编辑“可以对能启动该程序的用户”-->添加"Everyone All Lauch",然后“应用”该设置 2、定位你的程序,如c:\temp\yourserver.exe,右击鼠标,选择“属性”-->“安全性”,添加“Everyone 完全控制” 以上测试在客户为Win98,以非NT账号用户进入;服务器为NT4.0,用dcomcnfg.exe配置,调试通过
编写一个批处理文件,文件内容为
tregsvr -q yourservername1.exe(.dll)
tregsvr -q yourservername2.exe(.dll)
...
或者你自己写一个程序调用。
tregsvr在Delphi的bin目录下,tregsvr的源代码在C:\Program Files\Borland\Delphi5\Demos\Activex\Tregsvr下
tregsvr -q yourservername1.exe(.dll) 无效;
===============================================
如果不在客户端注册服务器的DCOM的宿主.exe,在客户端会出现
"类名未注册"的提示,如何注册远程的DCOM类名呢,其实就是写
注册表,不知有无快捷的方法?!
悬赏300分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
不是同一台计算机,应该向注册activex或dll那样注册。
可到底在客户端怎么注册应用服务器呢?直接运行.exe是不方便的。因为应用服务器肯定和
数据库连接,运行必须在每个客户端先新建odbc连接才行,否则不能运行应用服务器程序。
tregsvr -q yourservername1.exe(.dll) ,不加参数q,它的提示信息是什么?tregsvr实际上也就是在客户端运行一下服务器程序,只是我们看不到而已。
奇怪的是,刚才我做了一个简单的例子,用DCom连接,在客户端我没有注册服务器,它也可以正常运行。那台客户端的机器装了Delphi,我想可不可能是由于midas.dll的问题?
同感,
奇怪的是,刚才我做了一个简单的例子,用DCom连接,在客户端我没有注册服务器,它也可以正常运行。那台客户端的机器装了Delphi,我想可不可能是由于midas.dll的问题?
周一我去厂里试一下,把它的什么“号”输到
客户机的DCOMConnection1属性中试试,是不是就免了注册?!
邦助中说的很清楚:
用DCOMConnection->ServerGUID代替ServerName就可避免客户端注册了:Using ServerGUID rather than ServerName to identify
the application server is more robust because it does not
require the application server to be registered on the client system.注册的值在 xxx_TLB.CPP 中,第三个号 CLSID_My就是:const GUID LIBID_Server0 = {0xE4B83600, 0x1F9A, 0x11D5,{ 0xA1, 0x8E, 0x00, 0x50, 0xBA, 0xAB, 0xA9, 0x4C} };
const GUID IID_IMy = {0xE4B83601, 0x1F9A, 0x11D5,{ 0xA1, 0x8E, 0x00, 0x50, 0xBA, 0xAB, 0xA9, 0x4C} };
const GUID CLSID_My = {0xE4B83603, 0x1F9A, 0x11D5,{ 0xA1, 0x8E, 0x00, 0x50, 0xBA, 0xAB, 0xA9, 0x4C} };在设计时要这样填,就可避免在客户端异机注册DCOM了
DCOMConnection1->ServerGUID="{E4B83603-1F9A-11D5-A18E-0050BAABA94C}";
下面的贴子上留言,就便给你加分!
http://www.csdn.net/expert/topic/128/128972.shtm
这个注册问题,我又试了一上午,在ServerGUID上填上ProgID,
只能保证NT有帐号的用户可以,但无帐号的用户仍出现:
Interface not support(接口不支持)why ????怎么办?
他不给分,我可以给分,帖子
http://www.csdn.net/expert/topic/128/128972.shtm
有三个号的,
Interface not support,是接口号没注册的问题!
为了使无账号用户也能访问,按以下步骤设置:
1、运行dcomcnfg.exe, 应用程序-->“你的Server程序”的属性-->安全性-->选择编辑“可以对能启动该程序的用户”-->添加"Everyone All Lauch",然后“应用”该设置
2、定位你的程序,如c:\temp\yourserver.exe,右击鼠标,选择“属性”-->“安全性”,添加“Everyone 完全控制”
以上测试在客户为Win98,以非NT账号用户进入;服务器为NT4.0,用dcomcnfg.exe配置,调试通过
上面步骤2不详细,进入“文件属性”,选择“安全性”后,在“权限”中添加“Everyone 完全控制”
没有帐号的win98客户机就是不行,出现Interface not support!