Исключительная информация о процессе чтения, через Process.GetProcesses (строка), из Windows 7 - PullRequest
3 голосов
/ 10 декабря 2011

У меня проблемы с установленным производственным сервисом .NET2.Служба собирает информацию о процессах и файлы журналов с различных целевых компьютеров.Он работает на 80 сайтах без проблем;в основном в Windows 2000, Windows XP и Windows 2003.

Теперь при работе с целью Windows 7 возникает исключение, когда служба пытается прочитать информацию о процессе.

Код выглядит следующим образом:

 Process[] procs = System.Diagnostics.Process.GetProcesses("10.11.12.13");

Информация. Целевой компьютер отвечает на команду ping, и учетные данные «adminUser» существуют как на целевом, так и на служебном компьютере.

Информация об исключении:

ex{"Не удалось подключиться к удаленному компьютеру."} System.Exception {System.InvalidOperationException} [System.InvalidOperationException] {"Не удалось подключиться к удаленному компьютеру."} System.InvalidOperationException

Data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}

InnerException {"Не удалось получить информацию о процессе из счетчика производительности."} System.Exception {System.InvalidOperationException} [System.InvalidOperationException]{"Не удалось получить информацию о процессе из счетчика производительности."}System.InvalidOperationException

Data {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}

InnerException {"Сетевой путь не найден"} System.Exception {System.ComponentModel.Win32Exception}

Сообщение «Не удалось получить информацию о процессе из счетчика производительности».string

Исходная "системная" строка

StackTrace "в System.Diagnostics.NtProcessManager.GetProcessInfos (PerformanceCounterLiblibrary) \ r \ n в System.Diagnostics.NtProcessManager.GetProcessInfote (String machineNemleMame, Boo"string

TargetSite {System.Diagnostics.ProcessInfo [] GetProcessInfos (System.Diagnostics.PerformanceCounterLib)} System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo}

Сообщение« Не удалось подключитьсяна удаленную машину. "строка

Чтобы устранить эту проблему, я отключил брандмауэр Windows на целевом компьютере, но безрезультатно.У кого-нибудь есть какие-либо идеи?


Если у кого-то есть какие-либо предложения относительно того, какие шаги и в каком порядке я должен пытаться, я очень признателен за помощь.


Обновление:Я выполнил команду «tasklist» с компьютера мониторинга, передав аргументы для запроса к удаленному (целевому) компьютеру, и я смог увидеть информацию о процессе того же типа, которую я не могу получить программным способом ...

Команда выглядела так:

tasklist /s 10.11.12.13

Возвращенная информация выглядела так:

...  
notepad.exe                    672                            1      4,916 K
...  

Итак, почему .NET не видит информацию о процессе ???

Ответы [ 2 ]

7 голосов
/ 04 января 2012

Оказывается, проблема в том, что на целевом компьютере не работала служба «Удаленный реестр»!

Это объясняет, почему взлом брандмауэра не дал результата.Спасибо всем, кто предложил помощь.

1 голос
/ 10 декабря 2011

Да, попробуйте передать фактическое имя машины (не IP-адрес) в функцию:

Process.GetProcesses("MyMachineName")

Вы можете ввести ipconfig /all в командной строке и найти «Имя хоста», чтобы узнать имя машины.

...