问题标签 [com-server]

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 投票
0 回答
550 浏览

visual-c++ - ::CoResumeClassObect() 在 Windows Server 2012 R2 上失败,HRESULT:0x800706c6(数组边界无效)

我有一个 COM Server ,我想将它用作服务。我的应用程序有一个安装程序组件,它在本地系统中创建一个用户 (CN_Service) 并使用以下命令将此 COM 服务器安装为服务:

我有另一个组件,它负责启动这个已安装的服务。在其 winmain() 中,我使用以下代码注册 COM 服务器类对象(在 SUSPENDED 模式下),它成功注册了对象并将 HRESULT 作为 S_OK 返回,这与预期的一样。

但是当我尝试使用 ::CoResumeClassObjects() 恢复注册的类对象时,它会抛出一个错误“无法恢复类对象”,并带有 HRESULT 值:

800706c6(数组边界无效)

我正在使用下面的代码来恢复类对象:

问题陈述: 重要的是,我想在 Windows Server 2012 R2 机器上运行此代码,其中方法 ::CoResumeClassObjects() 失败。这段代码在 Windows Server 2008 机器上运行良好。

请建议我 server2012 框是否与 ::CoResumeClassObjects() 方法有关。

此外,我正在创建一个单独的本地用户(这是应用程序要求),用于将 exe 注册为代码中的服务并负责启动/停止服务。win server 2012 有问题吗?

任何帮助将不胜感激......</p>

0 投票
0 回答
53 浏览

c# - 使用 C# 访问 COM 服务器方法

我用python编写了一个com服务器实现。代码如下。

我对此真的很陌生,我想学习如何在 dotnet c# 中访问 python 函数。有人可以帮助我或提供一些指导。提前致谢

0 投票
2 回答
138 浏览

com - 如何识别 Microsoft COM-Server 的客户端是在进程外还是在进程内?

我对 Microsoft COM 技术不是很熟悉。简而言之,我有一个在可执行文件中实现的Microsoft 进程外 COM 服务器foo.exe。环境是 C++ 和 Microsoft 基础类框架 (MFC)。

有一个客户端bar.exe通过 Microsoft COM 技术使用 foo.exe 中的功能。在 foo.exe 中涉及一些动态链接库,它们也使用 COM 服务器 foo.exe 提供的功能(例如fooBar.dll)。

到现在为止还挺好。我正在寻找一种方法来确定 COM 服务器 foo.exe 的客户端是否位于其他进程中,甚至与 foo.exe 位于同一进程中,例如上例中的 fooBar.dll。有谁知道这样的方式?

编辑: 换句话说:显然 COM 服务器foo.exe可以充当进程内或进程外 COM 服务器。加上 Hans Passant 的评论和 Joe Willcoxson 的回答,他提议通过来解决调用 DLLGetModuleHandle以确定 COM 服务器当前是否充当进程内服务器,以防我得到句柄时和我没有将句柄作为进程外服务器。因此,当 COM 服务器知道在同一进程中使用来自该服务器的功能的众所周知的 DLL 时,我们可以说 COM 服务器此时充当进程内服务器,而在其他情况下充当进程外服务器。 -进程服务器。我是否误解了某些事情,或者这些考虑是否正确?

我目前的调查没有提及,所以我希望社区中有一位了解手推车如何运行的 Microsoft COM 专家。

非常感谢您的帮助!

0 投票
0 回答
592 浏览

python - 如何确保我可以导入 pythoncom 和 pywintypes,以便我可以在 python 3.4 中构建 COM 服务器?

我正在尝试用 Python 构建 COM 服务器。我已经下载并安装了 Pywin32(我使用的是 Python 3.4.1 的 32 位版本,所以我下载并安装了这个版本的 pywin32)。

现在,为了在 IDLE 中导入 pythoncom,我需要有两个可以轻松访问的 .dll 文件:-pythoncom.dll -pywintypes.dll

两个 .dll 文件都位于以下目录中:

C:\Python34\Lib\site-packages\pywin32_system32

当我在 IDLE 中给出 import 语句时,我收到以下错误:

回溯(最近一次调用最后一次):文件“”,第 1 行,在 import pythoncom 文件“C:\Python34\lib\site-packages\pythoncom.py”,第 2 行,在 import pywintypes ImportError: No module named 'pywintypes'

我重新安装了pywin32,但它仍然没有修复它。

我现在正在尝试将 C:\Python34\Lib\site-packages\pywin32_system32 添加到我的 PATH 目录中,但它不起作用。我正在通过以下方式尝试:

然后我收到以下消息:

该命令的语法不正确。

我在上面的语法中犯了什么错误?我该如何解决这个问题(即如何将 C:\Python34\lib\site-packages\pythoncom.py 添加到我的 PATH 环境中)?

0 投票
0 回答
313 浏览

visual-c++ - 如何为以不同用户身份运行的代理服务器初始化 COM 模拟?

我有一个应用程序作为登录用户以外的用户运行。我在 dllhost.exe 中有一个 COM 服务器,它在登录用户的凭据下运行。如何在客户端上设置 COM 安全性以便能够与服务器通信?当我尝试创建对象的实例时,我得到一个 E_ACCESSDENIED (0x80070005)。以下是详细信息:我有一个在标准代理 (dllhost.exe) 下运行的 COM 组件,其中 AppID{GUID}\RunAs 设置为“交互式用户”。

客户端作为不同的用户运行并调用 CCO。至此,我可以确认 DCOM 服务启动了 dllhost.exe 并创建了服务器。但是,由于客户端和服务器的凭据不同,CCO 返回 0x80070005。我还尝试将调用 CCO 的线程(令牌)设置为与 COM 服务器(dllhost)相同的凭据,但它仍然失败。

我知道我可以使用 COM cloaking 来协商安全性,但是,它不是很清楚。我想确保它只调用这个被模拟的组件,而不是进程中的所有 COM 调用。任何帮助将不胜感激。

0 投票
0 回答
77 浏览

excel - 如何使用 Matlab COM 服务器读取所有 Excel 数据

我需要读取非常大的 excel 数据并且我想计算它。我的数据有很多工作表,每张工作表都有很多列,列数不是特定的(例如:Sheet1 有 150 列,但 Sheet2 有 3000 列)但是行数是已知的。

此代码不起作用,因为它仅选择 256 列。所以,我需要知道不同工作表的列数。你能帮助我吗?

0 投票
0 回答
21 浏览

excel - 如何通过 com 服务器更新读取所有 excel 数据

func将数字转换为 excel 列的字符。我想读取所有数据。如果我为???例如 100 写一个数字,请阅读 100 列。

图片

0 投票
1 回答
170 浏览

c# - 如何在 C# 中获取已注册 COM 服务器的路径?

有没有一种很好的方法可以在 C# 中以编程方式获取已注册 COM 服务器的路径?

我们有一个在 C# 项目中引用的进程外 COM 服务器(即 exe 文件);但是我们想强制我们从特定位置运行 COM 服务器,所以我们想在启动它之前检查注册的 exe 文件的路径。除了潜入注册表之外,还有什么好方法可以做到这一点?

0 投票
2 回答
1058 浏览

windows - 避免将 MSI 带入兼容模式“以前版本的 Windows”

我有一个用于 32 位应用程序的安装程序包(使用 MakeMsi 构建,最初用于 Windows XP,并且从那时起进行了简单维护),它无法在现代(64 位)Windows 系统(7、8、10)上注册 COM 服务器. 这是我在尝试正常安装我的 MSI 时看到的:

COM注册错误截图

应用程序错误

模块 xyz 中的异常 EOleSysError 位于 000F0B01。访问 OLE 注册表时出错。

如果我将 MSI 带入兼容模式Windows 以前的版本,COM 服务器注册成功。由于不知何故“它起作用了”,到目前为止,我没有花太多时间来探索原因。但最后,我已经筋疲力尽地一次又一次地记住我们的客户(有时也是我)这个前提条件,所以我希望解决这个问题。

注册(和取消注册)是通过CustomAction完成的,正如我使用 Orca 看到的那样:

对于这些条目中的每一个,Typeis1122Sourceis INSTALLDIR.MYAPP

我可以想象COM服务器在安装过程中是在权限不足的情况下启动的,但是安装程序不是以管理员权限自动运行的吗?我的意思是,当我(作为标准用户)通过双击启动安装程序时,它会在实际安装发生之前显示 UAC 提示。为什么 COM 服务器没有以提升的注册和注销权限运行?很混乱...

我应该如何更改我的 MSI 以使 Windows 安装程序成功处理它?

0 投票
1 回答
166 浏览

python - _com_interfaces_ 做什么?

我正在尝试了解的 COM 服务器示例,并且在win32comext/shell/demos/servers/icon_handler.py我看到了这条线

虽然这很明显是指必须IconHandler实现IExtractIconandIPersistFile接口,但我找不到任何实际使用的文档。 _com_interfaces_win32com.server.registeror中看不到它win32com.server.localserver.py,因此注册和服务器调用似乎都没有真正使用它。是否有任何文件_com_interfaces_