hehe,兄弟真幸福!
我受尽折磨了。
告诉你最简单的办法:在你的客户机上建立一个账户, 服务器上有相同的账户。
而且两者密码相同; :)使用这个账户在client端的机器上登陆并运行;ok!!!
我受尽折磨了。
告诉你最简单的办法:在你的客户机上建立一个账户, 服务器上有相同的账户。
而且两者密码相同; :)使用这个账户在client端的机器上登陆并运行;ok!!!
调试欢乐多
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配置不对,能否详细说一下配置情况.万分感谢!真的!!!!
// 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);
只要指定ip地址(或者机器名)就可以了。我也想用vc写一个试一下;
不过, 我想没有必要指定安全性吧。
用默认值得了。只要两台机器有相同相同账号(相同密码)就可以了。
myserver.exe /regserver
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
身份标识:
交互式
默认属性:
默认身份验证 无这种配置是最宽限的设置,一定行的,我已经成功用过了.登陆帐号随便,不用设置为相同.
还有组件和代理都需要在客户和服务器上注册