2009-01-27 59 views

回答

3

在Vista +上,MSHTA.exe具有嵌入式清單,該清單優先於外部清單,因此您的建議不是選項。

在XP/2003上,是的,你的建議是可行的,儘管它會是一種糟糕的形式,就像在System32中刪除文件來修改系統二進制文件的行爲一樣(特別是確保你在清單中的任何註冊都是對象,你是唯一關心的人)。

適用於Win2003及以上版本的解決方案是使用Microsoft.Windows.ActCtx對象給出明確的清單引用來實例化對象。

例如:

var actCtx = WScript.CreateObject("Microsoft.Windows.ActCtx"); 
actCtx.Manifest = "myregfree.manifest"; 
var obj = actCtx.CreateObject("MyObj"); 

也許,如果必須在XP以及工作,你可能需要一個路徑是解決方案的組合。

0

編輯:我的答案是錯的,但我會離開這裏,避免任何類似的錯誤答案:)


如果你的問題是你能訪問COM對象不註冊它的機器,那麼我認爲答案是暫定的。然而,你需要做的工作將是實質性的,並且意味着實現大多數開發工具爲你提供的低級代碼(Delphi,.NET,JAVA)。你需要直接與dll進行接口(就像你會正常的dll),查詢它的接口並調用你的方法。

如果你有C,C++的知識,從這些語言訪問COM的方式會給你一些指示。

對不起,我不能有任何幫助。

+0

當然,我可以做舊時尚「LoadLibrary」/「GetProcAddress」,但這是一個HTA應用程序...我不明白我將如何從HTA進行Win32 API調用? – 2009-02-05 21:33:21

+0

問題是有關注冊自由COM這是一個功能添加到操作系統。通過這個特性,COM調用是透明的,不需要LoadLibrary等。話雖如此,該功能依賴於將清單與客戶端應用相關聯,所以我認爲您無法通過HTA進行清除。 – DSO 2009-02-05 21:40:43

相關問題