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

时间:2010-08-25 15:43:57

标签: com dll registration system-administration win64

我有一些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。这个不好。用户不应该被要求成为管理员才能运行简单的应用程序。

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

谢谢!

-Ken

1 个答案:

答案 0 :(得分:4)

旧的东西,它可能从未在具有有限特权的用户帐户上尝试过。它可能会做一些verboten,比如在HKLM \ Software中写入注册表项或在c:\ windows中创建一个文件。这些日子结束了。

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