2010-08-25 90 views
1

我有一些64位問題。這裏的瓢:在64位Windows機器上調用COM服務器DLL

我有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像這樣的機器上這個應用程序:

  • 我放在C:/Windows/SysWOW64
  • C:/Windows/SysWow64/regsvr32.exe註冊它的dll,但我只能夠獲得註冊通過運行regsvr32成功「以管理員身份運行」上下文菜單選項。

現在,當我嘗試運行我的exe文件時,除了使用「以管理員身份運行」選項啓動我的exe時,無法調用dll。不是很好。一個用戶不應該被要求成爲一個管理員來運行一個簡單的應用程序。

有沒有人知道我如何得到這個工作,而不需要「以管理員身份運行」選項?

謝謝!

-Ken

回答

4

舊的東西,它可能是從來沒有嘗試過與之前受限權限的用戶帳戶。它可能會做一些事情,比如寫入HKLM \ Software中的註冊表項或在c:\ windows中創建一個文件。這些日子已經結束並完成了。

如果你不知道它可能做了什麼,那麼使用SysInternals的ProcMon工具來觀察它使用磁盤和註冊表。訪問被拒絕的錯誤應該彈出,儘管需要一點挖掘。如果你不能改變代碼,那麼你真的應該考慮這個組件的報廢。您可以破解它試圖將其作爲中介解決方案的特定文件或註冊表項的權限。一定不要對c:\ windows目錄做任何事情,這會導致比解決問題更多的麻煩。這是另一回事,你的組件真的不屬於一個私人的Windows目錄。

+0

+1。 ProcMon是找出爲什麼這些東西不起作用的唯一可靠方法。 – sharptooth 2010-08-26 05:20:37

+0

+1。謝謝,漢斯!我能夠使用ProcMon追蹤這個問題。長話短說,DLL試圖用寫權限來創建和訪問SysWow64目錄中的文件,這是隻有管理員才能做到的。 糾正了這個問題,我現在很好! -Ken – Ken 2010-08-26 19:46:46

相關問題