代码之家  ›  专栏  ›  技术社区  ›  Ken

在64位Windows计算机上调用COM服务器DLL

  •  1
  • Ken  · 技术社区  · 15 年前

    我有64位的问题。这是独家新闻:

    我有32位COM EXE(用FoxPro编写)。此exe调用32位COM DLL(也用FoxPro编写)。在32位Windows世界中,DLL被放置在 C:/Windows/System32 目录,注册地 C:/Windows/System32/regsvr32.exe 一切都很好。可以启动exe,任何需要dll的进程都可以。

    在64位的世界里,这是一个不同的故事。我试图在运行的计算机上安装此应用程序 Windows 7 x64 像这样:

    • 我将DLL放入 C:/Windows/SysWOW64
    • 我把它登记在 C:/Windows/SysWow64/regsvr32.exe 但是我只有通过跑步才能成功注册 regsvr32 使用“以管理员身份运行”上下文菜单选项。

    现在,当我尝试运行我的exe时,它无法调用dll,除非我的exe是使用“以管理员身份运行”选项启动的。这不好。用户不应该仅仅为了运行一个简单的应用程序而被要求成为管理员。

    有人知道我如何在不需要“以管理员身份运行”选项的情况下使其工作吗??

    谢谢您!

    -肯

    1 回复  |  直到 15 年前
        1
  •  4
  •   Hans Passant    15 年前

    旧的东西,它可能从来没有尝试过在一个用户帐户有有限的权限以前。它可能会做一些不规则的事情,比如在hklm\software中写入注册表项,或者在c:\windows中创建一个文件。这些天已经结束了。

    如果您不知道可以做什么,那么使用SysInternals的procmon工具使用磁盘和注册表来观察它。访问被拒绝的错误应该会弹出,尽管这需要一些挖掘。如果您不能更改代码,那么您真的应该考虑使用寿命终止这个组件。您可以黑客为特定的文件或注册表项的权利,它正试图咀嚼作为一个中间解决方案。请确保不要对c:\windows目录做任何事情,这会导致比它解决的问题更多的麻烦。另一件事,你的组件 真正地 不属于专用Windows目录。