相关问题:
在哪里可以找到可以在 Powershell 中创建的所有 COM 对象?
我目前正在将 PHP 网站从运行 Windows Server 2003 和 PHP 5.2 的服务器迁移到运行 Windows Server 2012 R2 和 PHP 5.6.35 的服务器。创建 COM 对象时,一个脚本给我一个“类未注册”错误:
$obj = new COM('DllName.ClassName') or die ("Unable to create COM object");
Run Code Online (Sandbox Code Playgroud)
我已经检查了上述问题,并可以确认:
我想我接下来要看的是上面第一个问题的答案中提到的“高级设置”对话框,但是我在哪里可以找到它?实际使用的服务器是 Apache,作为 WAMP 的一部分安装,但我认为问题出在较低级别。
修复方法是使用第一个链接问题链接的博客文章中描述的注册表黑客技术。完整的流程是:
C:\Windows\SysWOW64(不是 System32)。C:\Windows\SysWOW64>regsvr32 <DllName>regedit在命令提示符下键入),然后在 .dll 中搜索 DLL 名称HKEY_CLASSES_ROOT\WOW6432Node\CLSID。该 DLL 应位于名为 的键中HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{GUID}。将 GUID 复制到剪贴板。AppID在此键(而不是其任何子键)中命名的新字符串值。将值设置AppID为 GUID(包括大括号)。HKEY_CLASSES_ROOT\WOW6432Node\AppID\{GUID}.DllSurrogate。将值留空。现在应该可以使用 COM 函数从 PHP 创建 ActiveX 对象。