Определить, какой Explorer.exe в списке задач действительно является оболочкой? - PullRequest
0 голосов
/ 18 июня 2010

HKEY_LOCAL_MACHINE, "ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon", "Shell" возвращает имя оболочки, обычно Explorer.exe.Однако он не содержит пути или идентифицирует конкретный исполняемый файл.

При перечислении списка задач определяется задача Explorer.exe.

Но что, если пользователь запустил другую, не связанную задачупо имени Explorer.exe?

Каков наилучший способ определить, что конкретный экземпляр Explorer.exe на самом деле является оболочкой?

Мне нужно избегать путаницы между задачами, которые являютсяоболочка и задачи, которые могут не являться оболочкой, но иметь одно и то же имя, например Explorer.exe

Ответы [ 4 ]

0 голосов
/ 19 июня 2010

Я не думаю, что есть надежный метод;лучшее, что вы могли бы сделать, это эмулировать то, что делает CreateProcess :

Если имя файла не содержит пути к каталогу, система выполняет поиск исполняемого файла в следующей последовательности:

  1. Каталог, из которого загружено приложение.
  2. Текущий каталог для родительского процесса.
  3. 32-разрядный системный каталог Windows.Используйте функцию GetSystemDirectory, чтобы получить путь к этому каталогу.
  4. 16-разрядный системный каталог Windows.Не существует функции, которая получает путь к этому каталогу, но она ищется.Имя этого каталога - System.
  5. Каталог Windows.Используйте функцию GetWindowsDirectory, чтобы получить путь к этому каталогу.
  6. Каталоги, перечисленные в переменной среды PATH.
0 голосов
/ 18 июня 2010

Возможно, вы могли бы использовать список задач утилиты командной строки следующим образом:

tasklist /FI "imagename eq explorer.exe" /FI "session eq 1" /FI "sessionname eq Console"
0 голосов
/ 19 июня 2010

Не ищите Explorer.exe, ищите полный путь оболочки, который должен быть C:\Windows\Explorer.exe.

0 голосов
/ 18 июня 2010

Вы можете использовать Process Explorer , чтобы получить более подробную информацию о процессе.Вы сможете узнать по программам, запущенным под каждым процессом проводника, местонахождению файла процесса проводника и нескольким другим вещам.

...