2011-12-20 88 views
4

我的公司运行一个用delphi编写的旧应用程序。一个简单的com服务器,为某些计算机提供某些数据库。我必须在每台计算机上运行一次服务器来注册com接口,并且自从Windows XP以来的任何时候,它一直在运行。 使用Windows XP我从来没有一个单一的问题,但在Windows 7中,类只是不会注册,无论我尝试什么(我尝试导出注册表键),当我打开客户端时,我仍然会收到错误“Class not注册”。如何在Delphi 7中使用delphi制作com界面

有什么建议吗? PLZ拯救我的圣诞节。

+4

[This](http://stackoverflow.com/a/3440419/960757)可能会拯救你的圣诞节:) – TLama 2011-12-20 02:01:36

+1

Windows 7具有较高的安全性。事实上,它有一个XP从未有过的全新的安全层。当在计算机上访问诸如注册表之类的东西时,您必须明确定义您打算如何访问它。例如,'Reg:= TRegistry.Create;'然后写入并得到一个错误。但使用'Reg:= TRegistry.Create(KEY_READ或KEY_WRITE);'并且它工作正常。这也可能是您问题的一部分。 – 2011-12-20 03:17:19

+1

[注册32位COM DLL到64位Windows 7]的可能的重复(http://stackoverflow.com/questions/3439845/register-32-bit-com-d- dll-to-64-bit-windows-7) – 2011-12-20 03:43:32

回答

6

我的COM服务器,EXE和DLL都是在32位XP上用BCB6(而不是Delphi)编写的,在64位Windows 7上安装时它们工作得很好。你只需要确保你从一个高架的过程运行他们的安装代码,就是这样。以“以管理员身份运行”选项打开cmd.exe实例,然后导航到COM服务器的文件夹,并使用/INSTALL参数(适用于EXE)或32位版本的regsvr32.exe(适用于DLL) WOW64系统文件夹。

+2

如果您不知道32位regsvr32是C:\ Windows \ SysWOW64 \ regsvr32.exe – 2011-12-20 07:27:47