dcom的配置

fengyeruwo 2002-05-23 09:48:40
我在练习dcom的使用时,对于cocreateinstanceex命令时,返回的错误信息是"不能创建终结点"不知是什么造成的,请教一下.
我使用的dcomcnfg进行配置.
...全文
44 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengyeruwo 2002-05-29
  • 打赏
  • 举报
回复
有一点,我想问问,就是两台机子是否要求有一样的帐户和一样的密码?
fengyeruwo 2002-05-29
  • 打赏
  • 举报
回复
万分感谢!
真的!
我来试试!
laughsky 2002-05-24
  • 打赏
  • 举报
回复
可以用程序把DCOM安全属性配为最低,这样应该是可以的,在你的服务端和客户端调用接口之初(也即CoInitialize(0)之后)加入如下代码:
// Turn security off so that everyone has access to us
CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_NONE,
RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
sailing1492 2002-05-24
  • 打赏
  • 举报
回复
知不知道在服务端如何取得客户端的机器名或者IP?
yzhz 2002-05-24
  • 打赏
  • 举报
回复
serverinfo.pwszName = L"llssh" //llssh为机器名也可以换成IP地址试一下.
DCOMCFG配置步骤:
客户方:
运行dcomcnfg.
选择相应的组件属性:
. 身份标识:交互式用户
默认属性:
默认身份验证 无

服务器方面:
运行dcomcnfg.
选择相应的组件属性:
安全性:
自定义访问权限
everyone - allow
accesssystem - access
interactive -allow access
自定义启动权限
everyone - allow lauch
system - allowlauch
interactive -allow lauch
自定义配置权限
creator-owner -full
everyone -read
system -full
interactive -full
身份标识:
交互式
默认属性:
默认身份验证 无

这种配置是最宽限的设置,一定行的,我已经成功用过了.登陆帐号随便,不用设置为相同.
还有组件和代理都需要在客户和服务器上注册
hhb 2002-05-24
  • 打赏
  • 举报
回复
如:
myserver.exe /regserver
hhb 2002-05-24
  • 打赏
  • 举报
回复
在服务器也应该注册吧
phonlee 2002-05-24
  • 打赏
  • 举报
回复
呵呵, 我的客户端用vb写的;
只要指定ip地址(或者机器名)就可以了。

我也想用vc写一个试一下;
不过, 我想没有必要指定安全性吧。
用默认值得了。

只要两台机器有相同相同账号(相同密码)就可以了。
fengyeruwo 2002-05-23
  • 打赏
  • 举报
回复
源程序如下:
CLSID clsid;
HRESULT hr;
hr = CoInitializeEx(NULL,0);

UpdateData();

hr = AfxGetClassIDFromString(m_progid, &clsid);
if (FAILED(hr))
{
MessageBox("Could not get class id");
return;
}

COSERVERINFO serverinfo;
COSERVERINFO* pServerInfo;
DWORD dwContext;

MULTI_QI qi[2] = {{&IID_IAccount, NULL, 0},
{&IID_IDisplay, NULL, 0}};

if (m_nLocalRemote == 0)
{
pServerInfo = NULL;
dwContext = CLSCTX_LOCAL_SERVER;
}
else
{
serverinfo.dwReserved1 = 0;
serverinfo.dwReserved2 = 0;
// serverinfo.pwszName = m_strServer.AllocSysString();
serverinfo.pwszName = SysAllocString(L"llssh");
serverinfo.pAuthInfo = NULL;
pServerInfo = &serverinfo;
dwContext = CLSCTX_REMOTE_SERVER;
}

hr = CoCreateInstanceEx(clsid, NULL, dwContext,
pServerInfo, 2, qi);

if (SUCCEEDED(hr))
{
m_pAccount = (IAccount* )qi[0].pItf;
m_pDisplay = (IDisplay* )qi[1].pItf;

int nBalance = -1;

m_pAccount->GetBalance(&nBalance);
SetDlgItemInt(IDC_BALANCE, nBalance);
}
else
if(hr==CO_S_NOTALLINTERFACES)
{
MessageBox("Not get all interfaces","Error",MB_OK);
}
else
MessageBox("Could not connect to server.", "OnConnect");


还是不行呀!!!!!
是不是我的dcomcnfg配置不对,能否详细说一下配置情况.



万分感谢!真的!!!!
fengyeruwo 2002-05-23
  • 打赏
  • 举报
回复
必须是系统管理员吗?
phonlee 2002-05-23
  • 打赏
  • 举报
回复
hehe,兄弟真幸福!
我受尽折磨了。
告诉你最简单的办法:在你的客户机上建立一个账户, 服务器上有相同的账户。
而且两者密码相同; :)

使用这个账户在client端的机器上登陆并运行;

ok!!!
yzhz 2002-05-23
  • 打赏
  • 举报
回复
把源程序写出来吧
finix 2002-05-23
  • 打赏
  • 举报
回复
up

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧