【发布时间】:2011-03-15 12:34:17
【问题描述】:
我写了一个 com 对象的 dll 我注册了 我现在在哪里可以在我的机器上找到这个 dll (当我们将 dll 注册到机器复制 dll 的地方)
如果我尝试在 powerShell 中使用这个 com 对象还有更多问题,所有丁字裤都能正常工作 如果我尝试在 javaScript 中使用它,我会遇到异常 任何想法???为什么??
【问题讨论】:
标签: com
我写了一个 com 对象的 dll 我注册了 我现在在哪里可以在我的机器上找到这个 dll (当我们将 dll 注册到机器复制 dll 的地方)
如果我尝试在 powerShell 中使用这个 com 对象还有更多问题,所有丁字裤都能正常工作 如果我尝试在 javaScript 中使用它,我会遇到异常 任何想法???为什么??
【问题讨论】:
标签: com
注册 COM DLL 不会复制 DLL。它只是添加了 COM 用来定位您的 DLL 的注册表项。例如,为每个类添加一个键“HKEY_CLASSES_ROOT\CLSID{your class ID}”。很多时候,您的 DLL 路径作为默认值存储在子项中,例如“InprocServer32”(实际名称取决于您的类被配置为如何激活)。
JavaScript 无法访问 COM 对象,甚至无法访问本地文件,因为 JavaScript 是在出于安全原因而设置的隔离环境中执行的。
【讨论】:
正如 Richard Walters 所说,注册 COM 对象不会将其复制到任何地方。通常我比较懒惰,不会在 REGEDIT 中查找长 GUID,而是使用 Find 功能搜索 DLL 的名称。
既然您提到了 PowerShell,我可以假设您正在尝试在 Windows 脚本主机中使用 Javascript 吗?如果是这样,了解异常是什么可能会有所帮助。一个关于如何做到这一点的例子:
var xml = new ActiveXObject("Microsoft.XMLDOM");
xml.load("foo.xml");
当然,用您的 COM 对象中的信息替换 Microsoft.XMLDOM。
等效的 PowerShell 将是:
$xml = 新对象 -ComObject Microsoft.XMLDOM
$xml.load("foo.xml")
【讨论】: