回答
使用EventLog
。
必須EnableRaisingEvents
屬性設置爲true
而且當一個事件添加到指定的事件日誌 EntryWritten
事件處理程序將提高
這是處理OS 事件最簡單的方式
示例代碼
private void frmMain_Load(object sender, EventArgs e)
{
System.Diagnostics.EventLog s = new System.Diagnostics.EventLog("Application", ".", "");
s.EnableRaisingEvents = true;
s.EntryWritten += delegate(object st, System.Diagnostics.EntryWrittenEventArgs ew)
{
MessageBox.Show(ew.Entry.Message);
};
}
Running a program和opening a file是OS事件(它們涉及安全檢查),可以使用Windows內置審計功能捕獲。這些是在這裏脫離主題,直接向ServerFault.com提出進一步的問題
最小化程序是一個應用程序消息的例子,以獲得那些你需要使用SetWindowsHookEx
安裝鉤子。從.NET 4開始(它引入了並行運行時支持),這可以用C#完成,但不推薦。您需要注意的一個重大問題是您的事件捕獲代碼絕不能自行生成事件,否則您將啓動連鎖反應,導致所有正在運行的程序崩潰。
如何在代碼關閉主題中捕獲和響應審計事件? – 2011-05-13 12:25:06
@C:操作系統配置在這裏是無關緊要的。不需要編程來設置審計策略。審計事件由Windows捕獲並存儲在事件日誌中。 – 2011-05-13 12:27:29
thanx很多! ...現在你能給我一個代碼示例嗎? – 2011-05-13 16:17:53
- 1. 如何從其他事件
- 2. #1357 - 無法從內部其他存儲程序刪除或修改程序
- 3. HTML5/JS存儲事件處理程序
- 4. 如何從外部存儲讀取屬於其他應用程序的文件?
- 5. VB.NET:添加取消事件處理程序從其他類
- 6. 從其他Windows應用程序捕獲事件
- 7. 使用其他存儲過程的存儲過程列表
- 8. 如何調用其他存儲過程中的存儲過程
- 9. 重命名其他存儲過程的存儲過程!
- 10. 從另一臺機器上的其他存儲過程調用存儲過程
- 11. Form OnClick事件處理程序 - 如何重疊其他事件處理程序?
- 12. 添加自己的事件處理程序在其他事件處理程序
- 13. 實現其他事件處理程序後的事件處理程序
- 14. 從事件存儲獲取事件
- 15. SQL如果其他存儲過程
- 16. 調用其他存儲過程
- 17. SQLite數據和其他應用程序保存的文件存儲在哪裏?
- 18. 從事件處理程序存儲數組中的2個值
- 19. Enum,PList或其他存儲?
- 20. Coldfusion:存儲路線和其他應用程序中的變量
- 21. 如何清除其他應用程序的隔離存儲?
- 22. 防止其他數據庫從存儲過程中恢復
- 23. 如何防止返回結構從其他存儲過程
- 24. SQL存儲過程,列從其他兩個計算列
- 25. 如何從獨立存儲中讀取其他課程?
- 26. SQL存儲過程執行選擇從其他特效
- 27. 複製存儲過程從一個數據庫到其他
- 28. 從其他線程進程接收事件後,JavaFX UI凍結
- 29. 從其他.js運行java事件
- 30. AS3:從其他對象接收事件
除非另一個應用程序通過任何機制公開它,否則你就不幸運。 – leppie 2011-05-13 11:29:52
@leppie:是MSDN官方文檔中的「運氣不好」嗎? :) – alex 2011-05-13 11:30:50
@alex:當更簡單的措辭可能會做時,MSDN有一種特殊的方式。 – 2011-05-13 11:49:51