问题标签 [dcom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6252 浏览

windows - DCOM 中的模拟如何工作?

我有一个使用 OLE 自动化编组器的 DCOM 客户端和服务器应用程序。它们在同一台 PC 上运行时工作正常,但当服务器位于不在同一域中的另一台 PC 上时,我得到 E_ACCESSDENIED (0x80070005)。

服务器 PC 配置了 dcomcnfg 以将对任何 DCOM 对象的所有访问权限授予我在客户端上指定其登录名和密码的用户。ServerApp 及其类型库在服务器 pc 上注册。

类型库也在客户端 PC 上注册。我直接在 ClientApp 中指定服务器名称,因此据我了解,客户端 PC 上不需要 dcomcnfg 配置。

带有服务器名称、登录名、域和密码的 CreateInstanceEx() 工作正常。它返回 IUnknown,同时在服务器 PC 上启动 ServerApp。

但是当我尝试查询服务器支持的接口时,我得到 E_ACCESSDENIED。

分析安全事件日志,我有两条记录:

首先,我在 ClientApp 中指定其凭据的用户成功进行网络登录。当我调用 CreateInstanceEx() 时会发生这种情况。

接下来,我在客户端 PC 上登录的用户的登录尝试失败。由于两台 PC 不在域中,因此服务器 PC 不知道该用户。

现在,为什么这个用户会登录服务器,尤其是当我调用所有事物的 QueryInterface 时?

研究 CreateInterfaceEx 参数,似乎存在某种模拟机制。但目前还不清楚谁冒充谁。涉及三个用户凭据:

  1. ServerApp 在服务器 PC 上运行的用户(在 dcomcnfg 中配置)。

  2. ClientApp 在连接时指定其凭据的用户。

  3. 其凭据 ClientApp 在客户端 PC 上运行的用户。

不管你怎么看,如果涉及#3,那就是一个用户太多了。如果 DCOM 无论如何都要在服务器 PC 上识别/模拟 #3,为什么我需要指定 #2 的凭据?到什么地步?

DCOM 冒充 #2 似乎是合乎逻辑的,因为这是我明确指定为我的凭据的。但是为什么要进行第二次登录尝试呢?

有人可以解释一下模拟是如何工作的,以及是否有办法忽略它并以 dcomcnfg 中指定的用户身份运行?

0 投票
1 回答
3722 浏览

windows - 尝试使用管理员以外的任何其他用户运行 DCOM 组件时服务器执行失败

下午,

正如主题所说,我在尝试运行使用 DCOM 代理的 Web 应用程序时遇到此错误。

“由于以下错误,检索具有 CLSID {82154420-0FBF-11D4-8313-005004526AB4} 的组件的 COM 类工厂失败:80080005 服务器执行失败(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))。”

我创建了一个用户只是为了运行它,但我无法让它运行。

如果我将 dcomcnfg.exe 中的“身份”以及 AppPool 中的运行用户更改为管理员,它会立即运行,但对于自定义用户,则不会。

出于故障排除的目的,我什至将用户添加到管理员组,但它仍然无法运行。

顺便说一下,该组件是 OpenOffice 3.3,安装时没有 QuickStart 和 Active-X 支持,我正在尝试将 .ODT 转换为 .PDF

任何帮助将不胜感激。

问候 LP

0 投票
1 回答
2990 浏览

wcf - 由于以下错误,检索具有 CLSID {XXXX} 的组件的 COM 类工厂失败:80040154

我正在运行安装了 IIS 7.5 的 32 位 Windows 7 操作系统。

在 Visual Studio 2010 中,我打开了我的解决方案,其中包含托管 WCF 服务的网站项目。我在 IIS 中创建了一个指向网站项目的应用程序。该网站的 bin 文件夹有许多我需要参考的程序集。但是这些程序集也是在同一台计算机上使用 .NET 4 构建的。

我可以同时使用 HTTP 和 HTTPS 浏览 WCF 服务。

但是,当我从测试 Windows 应用程序访问服务时(使用 WCF 合同的代理类),我得到了有问题的错误。之前一切都正常工作。

任何人都可以帮助解决这个问题?如何调查这个问题?

0 投票
1 回答
1081 浏览

c# - 为什么 WMI 不会在 ManagementObjectCollection 中返回完整的结果集?

使用 C# .net 运行 WMI 查询

关于为什么在多次运行查询时不会总是返回时间范围内的所有相同事件并且在这样做时也不会引发异常的任何想法?

在实际代码中,查询每次都会更改以获得不同的时间范围,但不完整的结果会显示不完整的结果。

每次运行时,ManagementObjectCollection返回的 from都会searcher.Get()成功枚举列表 - 没有引发异常,但是集合并不总是相同的。

每次都可能对集合进行不同的排序,这是意料之中的。该集合并不总是包含相同时间范围内的相同事件计数,这是意料之外的。

每隔几百个查询,该集合似乎就无法获得完整的 WMI 结果。它默默地这样做,我还没有发现任何异常或错误消息。

我们发现,对于某些日志文件类型(至少值得注意的是安全性),“逻辑”运算符<=<反对时间的行为也不符合预期,因此我们已经必须在每一端使用包含的 <= 来处理重叠的结束时间点。

上述丢失结果的问题不是由于逻辑运算符未能包含 == 的时间。

0 投票
1 回答
236 浏览

php - Using Internet Explorer via php .com extension - why does it take so long?

I got this message everytime i try to run a .COM script.

Fatal error: Maximum execution time of 30 seconds exceeded in D:\wamp\www\php\page.php on line 3

.NET is installed on my computer

PHP CODE:

Fatal error: Maximum execution time of 30 seconds exceeded in D:\wamp\www\php\page.php on line 3

.NET is installed on my computer.

0 投票
3 回答
2647 浏览

c++ - QueryInterface 失败并显示 E_ACCESSDENIED

以下方法是 DCOM 服务器方法。COM 客户端和服务器在不同的 WinXP 机器上运行。COM 客户端调用RegisterClient方法注册回调接口。问题是QueryInterface方法失败并出现错误代码E_ACCESSDENIED。问题的原因可能是什么?

0 投票
0 回答
951 浏览

javascript - 变量使用 JScript 中不支持的自动化类型

我有一个简单的asp页面:

'MyComponent' 是一个具有以下定义的 DCOM 对象:

执行 GetVresion 函数时出现错误“Microsoft JScript 运行时错误:变量使用 JScript 中不支持的自动化类型”。我该如何解决?

0 投票
2 回答
3103 浏览

batch-file - 使用批处理文件的 DCOM 安全性

是否有任何方法可以使用批处理文件更改 COM 安全的访问权限?我需要使用批处理脚本在“访问权限”和“启动和激活权限”中将新值写入“编辑限制...”和“编辑默认值...”。我正在使用带有 Service Pack 2 和 3 的 Windows XP 机器。

谢谢你。

0 投票
1 回答
2091 浏览

batch-file - 如何使用 jinterop 调用远程 bat 文件

GlassFish Application Server 使用脚本 asadmin.bat 来启动 JVM。

我想在远程机器上使用来自 Java 的 jinterop 和 DCOM 调用这个脚本。我找不到有关此特定用法的任何帮助。任何帮助将不胜感激。

0 投票
1 回答
2506 浏览

asp.net - 在 Win Server 2008 64 位中运行时出现 ASP.NET 应用程序错误

请您帮帮我,将在 Win Server 2003 32 位运行的应用程序迁移到 Win Server 2008 64 位环境时,我的 ASP.NET 应用程序无法导入 excel 文件。如何修复这个错误?因为在 Win Server 2003 32 位中,它可以正常运行。

出现的错误报告是: *System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object在 C:\inetpub\wwwroot\ERMApproval\Administrator\ ImportRisk.aspx.vb:第 66 行。*

我的应用程序第 66 行的代码是:oBooks.Open(Server.MapPath("~/App_Data/Risk.xls"))

我尝试了几种情况:

  1. 将网络服务用户添加到 DCOM 配置中的 Microsoft Excel 应用程序中,并将应用程序池的标识设置为与以前相同。

  2. 在 DCOM 配置的安全性中添加了所有多种用户到 Microsoft Excel 应用程序和我的电脑。而且我在应用程序的文件夹中也添加了多种用户。

  3. 使用 corflags.exe 强制 32 位应用程序在 64 位环境中运行

  4. 使用 regsvr32.exe 将 Microsoft.Office.Interop.Excel.dll 文件注册到 windows 32 位组件服务。

  5. 使用rundll32.exe在32位环境下运行32位Microsoft.Office.Interop.Excel.dll文件

但结果还是一样。如果你能帮助我,那将是莫大的荣幸^^。最好的问候,-伊曼纽尔-