Найти скрытых шахтеров на ходу (скрытые окна + командные строки) - PullRequest
0 голосов
/ 04 января 2019

Я нашел этот C # и хочу улучшить его в Go: https://github.com/roachadam/MinerKiller/blob/master/MinerKiller/MinerKiller.cs

Мой первый вопрос: как мне определить, скрыто ли окно процесса.т.е. этот код:

if (p.MainWindowHandle == IntPtr.Zero )

Мой второй вопрос - как получить командную строку процесса.т.е. этот код C #

private string GetCommandLine(Process process)
{
     string cmdLine = null;
     using (var searcher = new ManagementObjectSearcher("SELECT CommandLine FROM Win32_Process WHERE ProcessId = " + process.Id))
     {
          var matchEnum = searcher.Get().GetEnumerator();
          if (matchEnum.MoveNext())
          {
              cmdLine = matchEnum.Current["CommandLine"]?.ToString();
          }
      }
      return cmdLine;
}

1 Ответ

0 голосов
/ 04 января 2019

Хотя пакет os стандартной библиотеки go предоставляет множество полезных утилит для взаимодействия с функциональными возможностями операционной системы, они гораздо «более низкого уровня», чем те, на которые вы ссылаетесь из классов .NET System.Management.Скорее всего, вам придется реализовать поведение этих классов самостоятельно, чтобы достичь желаемого результата (используя инструмент из пакета Go os в качестве основных «строительных блоков»)

Тем не менее, существует порт psutilв Go (gopsutil - https://github.com/shirou/gopsutil/), которая предоставляет утилиты для получения информации о запущенных процессах, а также об использовании системы. Это, скорее всего, обеспечит абстракцию более высокого уровня, которую вы можете использовать для реализации своей программы.

Если gopsutil слишком самоуверенный или высокий уровень для ваших нужд, я бы также проверил пакеты для конкретной операционной системы в под-репозиториях golang.

Документировано здесь: https://godoc.org/golang.org/x/sys

Источник здесь: https://github.com/golang/sys/

...