正在获取要在Vista中运行的COM对象

正在获取要在Vista中运行的COM对象,com,windows-vista,Com,Windows Vista,我们使用COM/ActiveX对象向我们的模拟软件公开一个接口。这在XP中运行得很好,但在Vista中,当VB客户端执行CreateObject()时,会出现“错误429:ActiveX无法创建对象” COM对象已手动注册,因此Vista注册表与XP注册表相同。我从DOS窗口运行VB界面,我开始使用“以管理员身份运行”。当我在VB中使用调试器时,客户机正在正确地访问和读取注册表,因此,据我所知,这显然不是一个安全设置 我还将这些文件加载到VS2005(该对象最初是在VS6中创建的)中,并重新构建

我们使用COM/ActiveX对象向我们的模拟软件公开一个接口。这在XP中运行得很好,但在Vista中,当VB客户端执行CreateObject()时,会出现“错误429:ActiveX无法创建对象”

COM对象已手动注册,因此Vista注册表与XP注册表相同。我从DOS窗口运行VB界面,我开始使用“以管理员身份运行”。当我在VB中使用调试器时,客户机正在正确地访问和读取注册表,因此,据我所知,这显然不是一个安全设置

我还将这些文件加载到VS2005(该对象最初是在VS6中创建的)中,并重新构建它们以获得更高的ATL版本,但这并没有帮助——我们仍然会遇到429错误


这是UAC问题的症状,还是我应该寻找更深层次的东西?

是否所有依赖项都安装在vista上?可能是XP上的某些标准dll不在vista上,所以您现在需要安装它


我想先看看它试图打开哪些文件/注册表项,你是运行regsvr32.exe还是只是破解注册表?如果是后者,请尝试运行regsvr32.exe


此外,如果您的模拟软件碰巧使用脚本机制来实例化ActiveX对象,请确保您拥有ActiveX对象的所有依赖项,并且没有为ActiveX对象或其依赖项设置a。

尝试Process Monitor-您可能会发现一些非常有趣的内容。是的,Process Monitor对于解决“在这里工作,在那里不工作”的COM问题非常有用。