繁体   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