1

У меня есть окно настройки windows с cygwin и ssh-сервером, которое работает нормально, однако сегодня я натолкнулся на команду, которую пытаюсь использовать, которая возвращает разные результаты в зависимости от того, используется ли она локально или через ssh.

Сначала у нас есть результаты запуска по ssh ...

ssh -i /tmp/tmpyEW3f0 Administrator@10.13.7.210 'tasklist /FI "username eq Administrator"'
INFO: No tasks running with the specified criteria.

Теперь мы запускаем ту же команду локально на 10.13.7.210 и получаем этот результат ...

C:\Documents and Settings\Administrator>tasklist /FI "username eq Administrator"
Image Name                   PID Session Name     Session#    Mem Usage
========================= ====== ================ ======== ============
explorer.exe                 536 RDP-Tcp#14              0     24,400 K
jusched.exe                  776 RDP-Tcp#14              0      9,228 K
ctfmon.exe                   780 RDP-Tcp#14              0      3,456 K
ApacheMonitor.exe            796 RDP-Tcp#14              0      2,520 K
rdpclip.exe                  444 RDP-Tcp#14              0      4,344 K
jucheck.exe                 1160 RDP-Tcp#14              0      8,708 K
cmd.exe                      876 RDP-Tcp#14              0      2,852 K
tasklist.exe                3008 RDP-Tcp#14              0      4,292 K

Есть идеи, почему они дают разные результаты?

1 ответ1

0

Говорят, что причиной различия является механизм безопасности в Windows, где пользовательские сеансы обрабатываются отдельно. Одна и та же учетная запись пользователя, входящая локально и через SSH, объединяет два разных сеанса, и, таким образом, заголовки окон между этими сеансами не отображаются.

Согласно ответу службы поддержки от Bitvise SSH Server:

Имеет смысл, что это не будет работать между сессиями, потому что рабочие столы разных логинов должны быть изолированы друг от друга. Если это работает через FreeSSHD, возможно, он запускает процесс на том же рабочем столе.

[...]

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


Что касается возможного решения для некоторых из этих случаев: в аналогичном случае я в конечном итоге использовал WMIC в качестве альтернативы.

Ранее использованный вызов был

tasklist /T /F /FI \"WINDOWTITLE eq Some window title\"

И это было заменено

wmic process where "commandline like '%%some command line%%' and name like '%%filename%%'" list

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .