2012-12-16 74 views
4

我有一個第三方Web應用程序,它依賴於用戶計算機上註冊的特定OCX文件。我已經到計算機以管理員身份和註冊用下面的命令文件:向regsvr32.exe註冊OCX並使其可供所有用戶使用

REGSVR32/S MyFile.ocx

這工作得很好,我能夠使用Web應用程序沒有問題。在註冊表中,我可以看到控件已正確註冊。

但是,當另一個用戶登錄到不是管理員的計算機上並嘗試運行該Web應用程序時,它不起作用。

如果我將該用戶添加到管理員組並讓他們運行REGSVR32命令,那麼他們可以正常工作。不幸的是,我真的不可能讓所有用戶成爲他們機器上的管理員。

有沒有辦法讓我的註冊OCX文件與REGSVR32,並讓所有用戶都可以使用,即使那些沒有管理員權限?

謝謝!

回答

4

通常,regsvr32在HKEY_LOCAL_MACHINE \ software \ Classes中註冊CLSID信息,因此註冊應該對所有用戶都可見。

問題可能出在您的OCX上。它可能會在啓動時做一些事情,防止爲非管理員用戶打開它。例如,它需要寫一些東西到HKEY_LOCAL_MACHINE註冊表,寫入Windows目錄,...

您可以檢查此OCX是否爲非管理員用戶使用Process Monitor工具並檢查ACCESS_DENIED錯誤。

如果您的OCX在管理員帳戶下沒有執行任何操作,您可以嘗試使用RegSvrEx工具在HKEY_CURRENT_USER控制桿下注冊OCX。這樣,您的OCX將在current_user_level下注冊

+0

謝謝。我使用標準用戶帳戶登錄到有問題的計算機,並使用「運行方式」啓動進程監視器並提供管理員帳戶。該應用程序沒有按預期工作,但在Process Monitor工具中沒有看到任何ACCESS_DENIED消息。你可以給我一個我應該在Process Monitor中做什麼的簡要描述。另外,我注意到,如果用戶在運行REGSVR32命令之後才能運行應用程序,那麼他們從未登錄過的計算機登錄。它只適用於已經擁有用戶配置文件的PC。 – TroggleDorf

+0

當您打開進程監視器時,我會建議您打開過濾器(Ctrl + L)並按「進程名稱」進行過濾,並指定包含OCX控件的進程。然後用有問題的用戶帳戶啓動您的流程並檢查「結果」列。檢查任何不是「成功」的東西。我希望它會有一些線索,爲什麼會失敗。 –

+0

你說過「它只適用於已經有用戶配置文件的電腦」。讓我問你一個問題,用戶從未登錄過該機器運行應用程序,然後註銷並重新登錄,他們是否能夠再次運行該應用程序。這樣他們將創建帳戶,並根據您的觀察他們不應該能夠打開該應用程序。 –