Tag: dcom

在对C#.NET 3.5服务器进行DCOM调用时,如何可靠地检查客户端身份?

我有一个旧的Win32 C ++ DCOM服务器,我正在重写使用C#.NET 3.5。 客户端应用程序位于远程Windows XP计算机上,也是用C ++编写的。 这些客户端必须保持不变,因此我必须在新的.NET对象上实现接口。 这已经完成,并且正在成功地实现接口,并且正确地从旧客户端到新.NET对象进行所有调用。 但是,我在从DCOM客户端获取调用用户的身份时遇到问题。 为了尝试识别发起DCOM呼叫的用户,我在服务器上有以下代码…… [DllImport(“ole32.dll”)] static extern int CoImpersonateClient(); [DllImport(“ole32.dll”)] static extern int CoRevertToSelf(); private string CallingUser { get { string sCallingUser = null; if (CoImpersonateClient() == 0) { WindowsPrincipal wp = System.Threading.Thread.CurrentPrincipal as WindowsPrincipal; if (wp != null) { WindowsIdentity wi = wp.Identity as WindowsIdentity; if […]

在DCOM配置中找不到Microsoft Word文档

我正在创建一个使用office 2007/2010自动化的简单asp.net网站..当我在本地机器(窗口7)上的iis 7上发布网站时有一个例外 Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). 我已经搜索了这个exception,我发现我必须在DCOM Config中为office设置一些权限。 我已经打开了组件服务并打开了DCOM配置,但我还没有找到Microsoft Word Document,我发现只有办公室字97 – 2003。 谁能告诉我如何解决这个问题。

如何从C#调用DCOM对象?

我有一个CLSID,我需要在不同的服务器(即DCS)中实例化这个,就像我的工作机器一样(即MWS)。 现在,如果我使用以下内容: var type = Type.GetTypeFromCLSID(new Guid(CLSID), Environment.MachineName, true); var COMObject = Activator.CreateInstance(type); var returnValue = COMObject.GetType().InvokeMember(methodName, flags, null, COMObject, args, argModifiers, null, null); 然后我得到“COM目标没有实现IDispatch”错误。 好吧,我知道可能COM目标对象没有IDispatch,所以它失败了。 现在尝试了其他的东西,如果我在VS中添加该COM DLL的引用,那么VS生成互操作程序集然后一切都像常规.net对象创建一样工作,但在这种情况下,对象实际上是在我的本地机器中生成的(MWS) pc)没有进入我想要的服务器。 伙计们有什么建议我怎么处理这种情况? 提前致谢。

服务器Word自动化权限(一些答案和一些问题)

我试图使用word自动化来计算word文档中的页数。 到目前为止,我遇到了这些错误: Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005. 打开文档时单词卡住了。 我目前的决议和目前采取的步骤是: 将注册表项[HKEY_CLASSES_ROOT\AppID\WINWORD.EXE]从{A86A40B3-0008-4D41-975C-BB586C7121E3}更改为{00020906-0000-0000-C000-000000000046} 。 在DCOM配置DCOMCNFG.EXE进行了以下更改: 在其appID“{A86A40B3-0008-4D41-975C-BB586C7121E3}”下显示的“Microsoft Word应用程序”中,为用户提供了iusr_本地午餐权限(仅限)并将标识设置为“启动用户”。 在“Microsoft Office Word 97 – 2003文档”中也被一些人称为“Microsoft Word文档”(可能取决于word版本)我给iusr和iwam完全启动和访问权限,将身份validation级别设置为“无”,设置启动用户到我自己的管理员用户。 “2-b”部分中所有3个mod的组合最终使所有这些考验成功并且现在正在运行。 使用我自己的用户进行启动是在打开文档时对单词卡住的响应。 将validation设置恢复为默认值会导致错误“1”。 将启动用户设置回“启动用户”会导致错误“2”。 目前的情况是一切正常,但只有当我的用户登录并在机器上处于活动状态时我才不会因为我必须使用我自己的用户必须登录并且认证设置为没有。 我写这个作为一个答案,为那些在我这里努力工作的人,并希望得到一些答案,我可以如何提高安全性,即删除启动用户和设置回认证,而不是每周7天每天24小时登录生产机器(当站点启动时)。 开发机器规格: Windows XP Pro 32位 IIS 5.1 经典ASP网站 COM + C#对象执行自动化。

dcomcnfg以编程方式运行

我可以找到各种关于如何为DCOM编程的东西,但实际上没有关于如何以编程方式设置/检查安全性的内容。 我不是要重新创建dcomcnfg,但如果我知道如何在C#(首选或VB.net)中重现dcomcnfg的所有function,那么我的目标就在眼前。 我似乎无法在此找到任何好的资源,没有开源API甚至是如何做每一步的快速示例。 甚至在这里DCOM或dcomcnfg返回的结果很少,而且没有真正关于如何设置/validation/列出安全性。 如果有人对开放API或某些示例有一些指示,我将不胜感激。