Как определить Windows. Диагностика. Процесс от ServiceController

Если Вы хотите получить доступ к защищенным методам, Вы могли бы создать подкласс класса, который Вы хотите использовать, который представляет методы, которые Вы хотите использовать в качестве общественности (или внутренний к пространству имен, чтобы быть более безопасными) и иметь экземпляр того класса в Вашем классе (используйте его в качестве прокси).

, Насколько закрытые методы затронуты (я думаю), Вы являетесь неудачливыми.

11
задан Justin Grant 15 October 2009 в 18:25
поделиться

1 ответ

В этом случае System.Management должен работать на вас. Вот пример для начала:

using System;
using System.Diagnostics;
using System.ServiceProcess;
using System.Management;
class Program
{
    static void Main(string[] args)
    {
        foreach (ServiceController scTemp in ServiceController.GetServices())
        {
            if (scTemp.Status == ServiceControllerStatus.Stopped)
                continue;    // stopped, so no process ID!

            ManagementObject service = new ManagementObject(@"Win32_service.Name='" + scTemp.ServiceName + "'");
            object o = service.GetPropertyValue("ProcessId");
            int processId = (int) ((UInt32) o);
            Process process = Process.GetProcessById(processId);
            Console.WriteLine("Service: {0}, Process ID: {1}", scTemp.ServiceName, processId);
        }
    }
}
25
ответ дан 3 December 2019 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: