簡體   English   中英

如何監控用戶正在執行的應用程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM