Как отслеживать приложения, которые выполняются пользователем - PullRequest
1 голос
/ 11 августа 2011

Я хочу создать приложение / службу для мониторинга активности пользователей, особенно для регистрации каждого приложения, которое запускается пользователем.
Возможно ли это в c #?Думаю, нет.Так как же это сделать в с ++ и winapi?Я не хочу полного решения, потому что оно, безусловно, сложно.Дайте мне только совет.
Спасибо!

Ответы [ 3 ]

1 голос
/ 13 августа 2011

Вы могли бы написать DLL, которая перехватывает CreateProcessW. В этом хуке вы (а) будете делать то, что хотите, когда порождается процесс, и (б) внедрять себя в новый процесс.

Затем вставьте DLL во все запущенные процессы.

РЕДАКТИРОВАТЬ: Мой ответ на другой связанный вопрос должен помочь вам.

0 голосов
/ 11 августа 2011
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.

0 голосов
/ 11 августа 2011

Посмотрите здесь http://msdn.microsoft.com/en-us/library/1f3ys1f9.aspx

Это даст вам все процессы, запущенные на локальном компьютере.

Чтобы получить процессы с окном, выполните:

var procWithWindow = from proc in Process.GetProcesses()
                     where IntPtr.Zero != proc.MainWindowHandle
                     select proc;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...