2012-10-08 21 views
2

我有一個Delphi 6應用程序得到EOSError異常,代碼5,訪問被拒絕但只有當我切換到另一個Windows 7用戶帳戶,或者我鎖定電臺。我正在打印一個堆棧跟蹤,但是這個錯誤似乎是直接從Application.Run()語句和Application.ProcessMessages()直接在堆棧下面發出的。堆棧的其餘部分是我的異常處理代碼。COM COM調用後,得到EOSError異常(訪問被拒絕),但只有當切換用戶或鎖定在Windows上的站點7

在操作過程中,代碼確實會調用ShellExecuteEx()並訪問COM/ActiveX對象,但只有在用戶明確單擊某個按鈕時。這隻發生在Windows 7上,而不是Windows XP上。我更改了我的應用程序,使其完全安裝到用戶應用程序數據目錄,因此不需要訪問任何管理員權限目錄。我知道這應該不重要,但我指出了以防萬一。

發生這種情況時,異常情況會變得很快而且很激烈。我將它們截獲並將它們轉儲到錯誤日誌中,以避免用大量的對話框來困擾用戶。任何人都可以告訴我什麼會通過切換離開或鎖定當前登錄的用戶來觸發大量這些錯誤?當前用戶帳戶不活動時,爲什麼我的應用程序會遇到麻煩?

有一個想法。如果用戶當前未登錄,是否會執行一些位圖操作?我確實有一個旋轉標籤雲,可以持續進行Windows API位圖操作來更新標籤雲圖像。這可能與它有關嗎?

如果是的話,我可以嘗試停用在當前用戶切換離開或鎖定標籤雲,但是我相信我需要的是反應在這個堆棧溢出文章中提到的事件Delphi代碼:

How do I detect a Lock This Computer command from a WPF application?

UPDATE:我做了一些額外的測試。直到我訪問印象筆記的COM/ActiveX接口時纔會發生錯誤,這是我與之交互的軟件。一旦我第一次打電話給Evernote vai COM API,當我鎖定電臺時,錯誤就會立即發生。

+1

爲會話鎖定/解鎖/登錄/註銷檢測的基礎代碼,你可以按照['這POST'(http://stackoverflow.com/a/4854908/960757) 。 – TLama

+0

@TLama。謝謝!順便說一句,我已經添加了我的orignal文章的更新。這開始看起來像我的作爲父進程的應用程序和Evernote的ENScript.exe作爲子進程之間的一些奇怪的問題。 –

+0

查看[解釋來自GetKeyState/GetCursorPos的錯誤](http://stackoverflow.com/q/20142166/2523663)瞭解類似問題。 –

回答

1

如果可能讓您的用戶將您的程序更改爲可以消除這些錯誤的兼容模式XP SP3。這顯然是一種解決方法。

您可以使用filemon一起processmonitor爲了看看是怎麼回事在Windows上: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

的全套: http://technet.microsoft.com/en-us/sysinternals/bb842062

+0

我有這些實用程序,但我想知道他們是否正確地使用64位Windows 7? –

+0

我有Windows 7 64位和processmon工作正常。我的優秀套件中沒有使用任何工具,但由於我的系統是64位,從未遇到問題。在另一個說明我是一個Evernote的粉絲:)希望你的程序增加它的實用性。 –

+0

@ - 謝謝。在Google中搜索TagHunter。我不想在這裏鏈接到它,並被視爲推廣產品。 –

2

我發現這個問題。這是因爲我在定時器上調用Controls.TMouse.GetCursorPos()來更新我在原始文章中提到的標記雲視圖。如果當前桌面不可用,該功能將引發異常,例如切換到其他用戶帳戶或鎖定工作站。此堆棧溢出帖子涵蓋GetCursorPos()函數的常規WinAPI上下文中的問題。

Call to TMouse.GetCursorPos sometimes fails with "A call to an OS function failed"

相較於上述帖子的作者,它只是發生在我的Windows 7和在Windows XP上。我需要更改我的代碼,以檢測活動桌面何時不再可用,並使用TLama建議的鏈接在下面鏈接的帖子中介紹的技術,使用會話鎖定/解鎖/登錄/註銷檢測來抑制該呼叫。見DavidHeffernan的回答是:

What does an application have to do in order "support" Remote Desktop Services?

相關問題