1

我遇到了一些 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。不是很好。用户不应该只是为了运行一个简单的应用程序而成为管理员。

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

谢谢!

-肯

4

1 回答 1

4

老东西,以前可能从未在具有有限权限的用户帐户上尝试过。它可能会做一些禁止的事情,例如写入 HKLM\Software 中的注册表项或在 c:\windows 中创建文件。这些天都结束了。

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

于 2010-08-25T16:20:14.100 回答