从未引用的程序集中调用 COM 方法
Calling COM methods from unreferenced assemblies
我正在将安装脚本从 js 迁移到 vb.net,我遇到了以下问题。我遇到了问题,因为 JS 是后期绑定的,所以我需要研究每个方法返回的数据类型,以便在 vb.net(或 C#(中制作强类型对应项(或 C#(
在原始的js安装脚本中,我到了不知道如何移植这2个调用的地步:
var objWMIService = GetObject("winmgmts:''''.''root''cimv2");
var objAccount = objWMIService.Get("Win32_SID.SID='S-1-1-0'");
如果我离开数据类型推断,我会得到 COMType,所以我无法从生成的对象调用 Get 方法。我想我可以通过使用 IDispatch 来解决这个问题,但是自从我使用 IDispatch 以来已经有 10 年了,我无法确切地补救如何做到这一点。
此外,经过进一步的研究,我发现内部COM实际上是一个SWBemServicesEX对象,我不知道该引用什么才能生成COM互操作系统。
如果有人能为这个问题提供任何想法或解决方案,我将不胜感激。
当前 vb.NET 代码只是:
Dim objWMIService = GetObject("winmgmts:''.'root'cimv2")
不知道如何能够从objWMIService调用Get方法,以及如何确定此方法实际返回的内容!
我结束了史蒂夫在他的回答中所说的,它为我解决了这个问题。我对运行时后期绑定不是很满意,但它可以完成工作!
供参考:
尝试使用 Dim objWMIService 作为对象 = GetObject("winmgmts:''.''root''cimv2"( 代替。然后你可以使用 Dim objAccount 作为对象 = objWMIService.Get("Win32_SID.SID='S-1-1-0'"(。执行后期绑定时,将所有内容声明为对象。然后,您可以在调试中单步执行代码,有时还可以查看返回的内容。然后搜索该类型的方法/属性/等并编写下一行。需要一点工作,但您不需要引用任何 dll。只有一个假设,即 dll 已注册 (COM( 或在您的路径中 .Net 遵循 (CLR(
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 在jstree中,如何将指定的节点集中到大型树上
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 使用Google Visualization动态调用构造函数
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 调用函数内部的函数
- 从其他帧集中的帧调用javascript函数
- 从未引用的程序集中调用 COM 方法