Можно ли правильно выполнить qwinsta из сеанса Cygwin ssh? - PullRequest
2 голосов
/ 12 августа 2011

У меня Cygwin работает на компьютере с Windows 7, и на нем запущен Cygwin ssh-сервер.В Linux у меня есть сценарий оболочки, в котором я хочу выполнить

ssh myuser@mymachine "qwinsta | grep Active"

, чтобы увидеть, кто вошел в систему. Это хорошо работало на компьютере с Windows Server 2008 R2, но, похоже, имеет проблемы в Windows 7.

Если я попробую это на компьютере с Windows 7, я получу:

bash: qwinsta: command not found

Теперь вот, где начинается странность ...

Если я войду в Windows 7машина нормально и смотри в C: \ Windows \ System32 с Windows Explorer, вижу qwinsta.exe.Если я открываю сеанс CMD и выполняю dir в C: \ Windows \ System32, я вижу qwinsta.exe.Если я открываю оболочку Cygwin и выполняю ls qwinsta.exe in / cygdrive / c / Windows / System32, я получаю:

ls: cannot access qwinsta.exe: No such file or directory

Если я выполняю cmd /c dir C:\\\\Windows\\\\System32\\\\qwinsta.exe из оболочки Cygwin, я получаю "Файл не найден "

Если я скопирую qwinsta.exe в мой домашний каталог Cygwin, он будет виден в моем домашнем каталоге с помощью ls.Если я попытаюсь запустить эту локальную копию qwinsta из оболочки Cygwin, она запустится, но также выведет строку:

{Message(): LoadString failed, Error 15105, (0x00003B01)}

Что случилось с qwinsta в Windows 7?

Ответы [ 2 ]

2 голосов
/ 05 декабря 2011

Проблема в том, что qwinsta.exe на самом деле не находится в C:\Windows\System32.На самом деле он находится в

C:\Windows\winsxs\amd64_microsoft-windows-t..commandlinetoolsmqq_31bf3856ad364e35_6.XX.XXX.XXXX_none_XXXXXXXX\qwinsta.exe

. Использование указанного выше пути (или мягкой ссылки на тот же) запустит qwinsta.exe, поскольку он существует на любом компьютере, и не потребует от вас копирования исполняемого файла в ваш дом.directory.

Сообщение об ошибке {Message(): LoadString failed, Error 15105, (0x00003B01)} о том, что система Multilinugal User Interface (локализация) не может найти информацию о локализации сообщения об ошибке для запускаемой программы (см. Коды системных ошибок ),В этом случае, похоже, что оболочка cygwin не предоставляет qwinsta.exe информацию, необходимую для поиска qwinsta.exe.mui в папке локали вашего языка (обычно C:\Windows\System32\en-US или любой другой локали).Просмотр этой папки несколько вводит в заблуждение, поскольку проводник покажет файл в этом каталоге, но при запуске ls /cygdrive/c/Windows/System32/en-US файл qwinsta.exe.mui отсутствует.Я подозреваю, что это как-то связано с новой структурой связывания в NTFS (см. Команду mklink ), но я пока не выяснил, как решить эту часть проблемы.

0 голосов
/ 19 апреля 2016

Решено:

  1. Сначала перейдите к C:\Windows\winsxs\amd64_microsoft-windows-t..commandlinetoolsmqq_31bf3856ad364e35_6.1.7600.16385_none_851e6308c5b62529 (Копирование и вставка этого местоположения работает так же, как и его поиск вручную.) Вы должны найти три файла: Msg.exe,Quser.exe и qwinsta.exe.Скопируйте эти файлы в папку C:\Windows\system32

  2. Далее перейдите к C:\Windows\winsxs\amd64_microsoft-windows-t..etoolsmqq.resources_31bf3856ad364e35_6.1.7600.16385_en-us_7bef78d9f4a6a8ac

Вы найдете три файла с одинаковыми именами, кроме этихзакончится .mui.

Скопируйте все эти три файла в папку C:\Windows\system32\en-US.

Теперь попробуйте запустить программу msg.Должно работать без проблем.

...