2013-04-06 29 views
1

當我的UAC(用戶帳戶控制)未設置爲非限制性「Never Notify Me」時,發生0x800401E3(MK_E_UNAVAILABLE)錯誤。Marshal.GetActiveObject(「Word.Application」)中的MK_E_UNAVAILABLE

Microsoft.Office.Interop.Word.Application wd = (Microsoft.Office.Interop.Word.Application) System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");

當代碼發佈和安裝項目後運行時所引發的錯誤。在編輯器中調試時,一切都很好。

這是由於安全設置或憑據?如何正確編寫這樣的代碼?

Win Word是開放的,當然也有一個文檔是開放的,而且這個代碼在UAC被設置爲「Never Notiz Me」時一直工作正常。

+0

用UAC通知設置更改解釋這是一個延伸。錯誤代碼僅僅意味着它無法找到正在運行的Word實例。 Word很容易解釋爲沒有運行。向您的問題添加詳細信息:您是如何確保Word實際上正在運行的? – 2013-04-08 11:31:23

+0

謝謝。其實我不打算解釋,只是想報告一下觀察。我偶然發現了與UAC的連接。我的代碼一直運行良好,並且它在UAC設置爲最低限制級別時又這樣做了。 Word只是在運行,如果沒有,代碼的目的是在這一點上保持沉默,事實確實如此。使用UAC進行限制設置時,只要在調試模式下運行(在編輯器中),代碼就會繼續查找單詞並且無錯誤。 – 2013-04-08 17:07:45

回答

1

作爲服務運行的話是討厭的業務,例如見here。我經歷了很多問題才使其工作。我的工作方式是在單獨啓動一次的過程中運行它。主程序通過將命令作爲字符串發送到進程的標準輸入並等待標準輸出響應來與進程通信。如果響應沒有按時分配,則該進程被終止並重新啓動

+0

謝謝@ M.Feingold,請注意,我已經修改了我的問題+足夠符合規則的希望。現在它不是一個更有趣的問題嗎?最好 – 2013-04-08 10:45:01

相關問題