2011-12-20 46 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