• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 请专家解决DCOM配置问题酬谢或聘请!!

请专家解决DCOM配置问题酬谢或聘请!!

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了dcom是什么,9955dcom最近十天更新,8844dcom更新后地址,dcom配置,9955dcom首页等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 请专家解决DCOM配置问题酬谢或聘请!!
描述:

我们公司现接手一个项目,需开发一个C/S基于DCOM的软件.现在测试DCOM框架时遇到问题!如有广州并对DCOM熟悉的朋友有兴趣可加入到项目中来.如有高手能在线指导调通测试DCOM架构.可以酬谢,也可以用本ID所有积分相送,或成为个人的朋友! 项目时间紧,借此发布求援,希望能得到高手相助!谢谢!本人QQ 3962762
使用的开发平台是VS2003 VC++, OS全部是 XP PRO
目前测试所遇到的问题描述:A机器调用B机器上的ATL COM系统服务(EXE)报错.RPC 服务器不可用,但如果客户端与服务器都在同一台机器调用OK.----------已在网上查了很多贴子.以下方案都已试过无效.
1.COM服务器的代理/存根已在B机器上注册成功 regsvr32 xxxPS.DLL.(但不知道为什么在注册表中查看该存根的CLSID下的子键为InprocServer32???)
2.DCOMCNFG里面的默认启动/访问权限已设,以及服务组件的启动/访问权限都已加上EVERYON.(根据网上的贴子反复试过)
3.LAN里面的个人防火墙全部关掉.(公司没有用域,只用的是工作组)
4.在A机器上用不同XP帐号登录都试过不行.但互相PING都是OK的.
测试Server部分代码/其他大都为系统生成////////////////////////////////////
HRESULT InitializeSecurity() throw()
{
HRESULT hResult = CoInitializeSecurity(NULL, -1, 
NULL, NULL, RPC_C_AUTHN_LEVEL_NONE,
RPC_C_IMP_LEVEL_IMPERSONATE, NULL, 
EOAC_NONE, NULL);
return hResult;
}
测试Client部分代码.
hr =  CoInitialize(NULL);
if(FAILED(hr))
{
MessageBox("组件初始化失败!");
return false;
}
//初始化安全设置
hr = CoInitializeSecurity(
NULL, //Points to security descriptor 
-1, //Count of entries in asAuthSvc 
NULL, //Array of names to register 
NULL, //Reserved for future use 
RPC_C_AUTHN_LEVEL_DEFAULT, //The default authentication level for proxies 
RPC_C_IMP_LEVEL_IMPERSONATE, //RPC_C_IMP_LEVEL_IDENTIFY, //The default impersonation level for proxies 
NULL, //Reserved; must be set to NULL 
0, //Additional client or server-side capabilities 
NULL //Reserved for future use 
); 
COAUTHIDENTITY   author_id;
COSERVERINFO   server_info;
COAUTHINFO   author_info;
TCHAR   user[]   =   _T("lanzsoft");//在本地运行,好像这里不起作用的.随便写都可以调用成功
TCHAR   pass[]   =   _T("123456");//;
BSTR   sername   =   L"192.168.1.4";
TCHAR   szDomain[]   =   _T("WORKGROUP");
ZeroMemory(&author_id,sizeof(COAUTHIDENTITY));
author_id.Flags   =   SEC_WINNT_AUTH_IDENTITY_ANSI;
author_id.User   = reinterpret_cast<unsigned   short *>(user);
author_id.UserLength   =   (ULONG)_tcslen(user);
author_id.Password   =   reinterpret_cast<unsigned   short *>(pass);
author_id.PasswordLength   =   (ULONG)_tcslen(pass);
author_id.Domain   =   reinterpret_cast<PUSHORT>(szDomain);
author_id.DomainLength   =   (ULONG)_tcslen(szDomain);
// author_id.Flags   =   SEC_WINNT_AUTH_IDENTITY_UNICODE;
ZeroMemory(&author_info,sizeof(COAUTHINFO));
author_info.dwAuthnSvc   =   RPC_C_AUTHN_WINNT;
author_info.dwAuthzSvc   =   RPC_C_AUTHN_NONE;
author_info.pwszServerPrincName   =   NULL;
author_info.dwAuthnLevel   =   RPC_C_AUTHN_LEVEL_DEFAULT;//RPC_C_AUTHN_LEVEL_CALL;  RPC_C_AUTHN_LEVEL_CONNECT
author_info.dwImpersonationLevel   =   RPC_C_IMP_LEVEL_IMPERSONATE;
author_info.dwCapabilities   =   EOAC_NONE;
author_info.pAuthIdentityData   =   &author_id;
ZeroMemory(&server_info,sizeof(COSERVERINFO));
server_info.dwReserved1   =   0;
server_info.dwReserved2   =   0;
server_info.pwszName   =    L"192.168.1.4";
server_info.pAuthInfo   =   &author_info;
//COSERVERINFO ServerInfo={0,L"larry",NULL,0};
MULTI_QI MultiQi={&IID_IUnknown,NULL,NOERROR};
hr=CoCreateInstanceEx(CLSID_SayHello,NULL,CLSCTX_REMOTE_SERVER,&server_info,1,&MultiQi);
if(FAILED(hr))
{///////////////////////远程调用这里总是RPC 服务器不可用
return false;
}
//通过IUnkonwn指针去查询接口指针,返回IAccount指针
pUnknown = (IUnknown *) MultiQi.pItf;
//pAccount = (IAccount *) MultiQi.pItf;
hr = pUnknown->QueryInterface(IID_ISayHello,(void**)&pSayHello);
//if(FAILED(hr))
//{
// MessageBox("没有查找的接口指针!");
// return false;
//}
pUnknown->Release();


解决方案1:

DCOM的权限问题主要是两个方面,一个是激活权限一个是访问权限。
首先看CoCreateInstanceEx调用成不成功,如果成功则激活权限通过
然后是接口查询,一般最容易出现的权限问题在这里,CoCreateInstanceEx返回的是代理指针,要确保代理指针有权限访问远程存根,要给代理指针赋予访问权限,如下
IUnknown *pIRewUnknown = NULL;
//取得代理的IUnkown接口
hr = qi.pItf->QueryInterface(IID_IUnknown, (void**)&pIRewUnknown);
//赋予代理指针访问访问远程存根的权限
hr = ::CoSetProxyBlanket(pIRewUnknown, -1, 0, 0, RPC_C_AUTHN_LEVEL_DEFAULT,
RPC_C_IMP_LEVEL_IMPERSONATE, &authidentity, 0);
//调用远程方法
hr = pUnknown->QueryInterface(IID_ISayHello,(void**)&pSayHello);
pUnknown->Release();
如果激活权限都通过,说明wendows权限认证这一关没过,比如windows域认证,还有服务器端的安全策略配制,等等。问题很可能出在安全策略配制中,比如不允许无密码用户登录等等。
如果以上方法都不行,就只能使用访问控制对象来解决了,访问控制对象是一个实现IAccessControl接口的com对象,通过使用访问控制对象可以最大限度解决广域网的DCOM访问问题。
没有解决不了的问题,不要急,先说清楚到底什么现象。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • DCOM中的多串口通讯
  • ★★★关于DCom服务器★★★
  • net中调用dcom对象如何释放
  • 问:不同网段之间可以使用DCOM通讯么?500分
  • DCOM如何走Internet?
  • dcom的问题
  • dcom的问题
  • 请问dcom能够实现这样的问题吗分不够另外给分
  • 一个比较朦胧的问题com/dcom/com+问题,朋友门都来看看
  • Dcom传人输出型字符串的问题!

相关文章

  • 2017-06-05 怎样才可以把我的DLL插入到WINLOGON这个进程
  • 2017-06-05 有人会IME编程吗?
  • 2017-06-05 进程启动的原理,请熟悉进程原理的解释一下,谢谢
  • 2017-06-05 visualstudio2010创建的MFCActiveX控件的工程不能运行提示:无法启动ocx程序
  • 2017-06-05 如何向线程中间传递一个结构的参数
  • 2017-06-04 只要问题能回答好,分数都不是问题(再送上100当小费)
  • 2017-06-04 在一个服务里不能用CSocket类吗?
  • 2017-06-04 如何让COM实现调用应用程序并传递数据
  • 2017-06-04 ATL开发的控件窗口问题
  • 2017-06-05 获取lnk文件的路径

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 求《COM编程精彩实例》光盘源码!
    • VC编程,GPIB仪器控制,怎么隐式连接DLL文件啊!
    • 一个简单的问题,怎样在windows编程中创建共享内存块
    • office多文档OLE操作命令栏被禁用求解决方法
    • CWebBrowser2,如何在显示文本txt时,将默认的编码方式改成utf-8的形式
    • 怎样让对话框程序启动不出现界面?
    • VC中调用VB的activedll的问题
    • 用IActiveDesktopSetWallpaper无法更桌面,为什么?
    • ■■寻找VC++程序高手,有小项目合作,是高手的请进■■
    • 懂的一定帮忙回答,不懂的别扰乱秩序,谢谢

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有