![](/img/trans.png)
[英]How to view/monitor which events are being fired from controls on a user interface
[英]How to monitor apps which are being executed by user
我想創建一個應用程序/服務來監視用戶活動,尤其是記錄用戶正在運行的每個應用程序。
這在 c# 中是否可行? 我想不是。 那么如何在 c++ 和 winapi 中做到這一點呢? 我不想要完整的解決方案,因為它肯定很復雜。 只給我一個建議。
謝謝!
您可以編寫一個掛鈎 CreateProcessW 的 DLL。 在這個鈎子中,您將 (a) 在生成進程時執行您想要執行的操作,並且 (b) 將自身注入到新進程中。
然后,將 DLL 注入所有當前正在運行的進程中。
編輯:我對另一個相關問題的回答應該對您有所幫助。
看看這里http://msdn.microsoft.com/en-us/library/1f3ys1f9.aspx
這將為您提供在本地計算機上運行的所有進程。
要獲取具有 window 的進程,請執行以下操作:
var procWithWindow = from proc in Process.GetProcesses()
where IntPtr.Zero != proc.MainWindowHandle
select proc;
Management.ManagementObjectSearcher Processes = new Management.ManagementObjectSearcher("SELECT * FROM Win32_Process");
foreach (Management.ManagementObject Process in Processes.Get())
{
if (Process.Item("ExecutablePath") != null)
{
string ExecutablePath = Process.Item("ExecutablePath").ToString();
string[] OwnerInfo = new string[2];
Process.InvokeMethod("GetOwner", (object[])OwnerInfo);
// do something
}
}
流程所有者將在OwnerInfo
字符串數組中可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.