none
Windows Server 2003: автоматически не открывается приложение для сканирования в терминальном режиме RRS feed

  • Вопрос

  • Есть сканер Canon LIDE 110. Есть Win2003 R2. Сканер завёл, всё хорошо, всё работает. Служба WIA запущена с правами LocalService. Сканировать нужно вслепую, т.е. жму на хардварную кнопку на сканере, программа выполняет нужные действия. И всё бы вроде ничего, но есть одна подстава: после долгих часов изысканий и поисков решений, почему же при нажатии на клавишу ничего не происходит, выяснилась одна любопытная вещь. Когда на выбор была только одна программа, ассоциированная с клавишей - ничего не происходило при нажатии. Когда руками прописал ещё одну, то снова тухляк. НО! Стал активен пункт возможности выбора программы при нажатии на клавишу и если выбрать этот вариант, то, о чудо, при нажатии на клавишу появляется окно выбора и программу можно выбрать и она даже работает и даже как надо. НО! Если поставить галку, запоминать выбор, то при следующем нажатии ровным счётом ничего не происходит. После ещё нескольких часов изысканий было выяснено, что если работать с сервером через консоль, то настройка "запоминать выбор" работает, а если хотя бы один раз подключисться через терминалку, то снова молчёк при нажатии. И если даже отключиться от сеанса, то всё так же не работает, до тех пор, пока не перенастроить через консоль... В общем уже всю голову сломал, дебажил как мог, не пойму в чём дело... Такое впечатление, что в реест в разные места прописывается эта настройка при консольном и терминальном доступе, хотя работаю черех mstsc /admin... Не могу понять... Помогайте, камрады, у меня уже скоро глаза вытекут...
    8 октября 2013 г. 15:08

Ответы

  • Сервер у меня 2003й, но не суть. Мысль уловил, буду копать в сторону Interactive Services Detection...
    Упс, пардон - опять невнимателен был, среагировал на Win7. В 2003 такого механизма нет и как раз /admin поместит в консольную сессию... но суть примерно та же - если драйвер не умеет... то...

    Active Directory? Ask me how.

    9 октября 2013 г. 8:22
    Отвечающий
  • Вернулся к проблеме. Настройки DCOM ни к чему не привели. Вышел из положения через задний проход: подключаюсь не с ключём /admin, а создавая новый сеанс и потом ,используя команду "shadow 0", имею доступ к незамутнённой консоли, где всё работает. Твики реестра, чтобы shadow заработал:

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
    “AllowRemoteRPC”=dword:00000001

    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
    «Shadow»=dword:00000002

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

    В частности, возможно ли автоматом релогиниться после завершения rdp-сессии. Т.е. чтобы десктоп снова работал в "правильном" консольном режиме.


    15 октября 2013 г. 19:56

Все ответы

  • Небольшое уточнение: проверил на Win7SP1 x86 - аналогичная ситуация.
    9 октября 2013 г. 6:29
  • Такое впечатление, что в реест в разные места прописывается эта настройка при консольном и терминальном доступе, хотя работаю черех mstsc /admin... Не могу понять... Помогайте, камрады, у меня уже скоро глаза вытекут...
    забудьте про /admin - в 2008R2 нет такого понятия... этот ключ теперь полезен только в сценариях с терминальными фермами, чтобы попасть на конкретный сервер, а не улететь на рандомный по велению брокера... Есть т.н. нулевой сеанс, в котором работают службы. Если драйвер не приспособлен к работе в терминале, то увы - в нулевой сеанс вы не "провалитесь"... единственное, что в ряде случаев помогает - это реакция службы Interactive Services Detection, когда обнаруживается что некий сервис из нулевого сеанса хочет интерактива... но всё зависит от того, как написан этот сервис...

    Active Directory? Ask me how.

    9 октября 2013 г. 8:09
    Отвечающий
  • Сервер у меня 2003й, но не суть. Мысль уловил, буду копать в сторону Interactive Services Detection... Печально даже не то, что драйвер не приспособлен, мне по-сути и не нужно в терминале с ним работать, а то, что после отключения (но не выхода из системы) система не реагирует на эвент...
    9 октября 2013 г. 8:19
  • Сервер у меня 2003й, но не суть. Мысль уловил, буду копать в сторону Interactive Services Detection...
    Упс, пардон - опять невнимателен был, среагировал на Win7. В 2003 такого механизма нет и как раз /admin поместит в консольную сессию... но суть примерно та же - если драйвер не умеет... то...

    Active Directory? Ask me how.

    9 октября 2013 г. 8:22
    Отвечающий
  • То селяви..? Нашёл обсуждение

    http://social.technet.microsoft.com/Forums/windowsserver/en-US/d4de0794-66c0-42c5-ab8f-bb7f83020192/does-server-2003-have-anything-like-ui0detect?forum=winservercore

    но там так ничем и закончилось... Быть может есть варианты? Установка повышенных привелегий для службы WIA имеет смысл?

    9 октября 2013 г. 8:40
  • То селяви..? Нашёл обсуждение

    http://social.technet.microsoft.com/Forums/windowsserver/en-US/d4de0794-66c0-42c5-ab8f-bb7f83020192/does-server-2003-have-anything-like-ui0detect?forum=winservercore

    но там так ничем и закончилось... Быть может есть варианты? Установка повышенных привелегий для службы WIA имеет смысл?

    боюсь, что смотреть в сторону сетевого сканирования, но это уже точно другое оборудование...

    Active Directory? Ask me how.

    9 октября 2013 г. 8:44
    Отвечающий
  • То есть "сетевого сканирования"?

    И если возвращаться к "Interactive Services Detection". Не могли бы пояснить возможную логику работы? Т.е. допустим я в сессии 0, драйвер в сесии 1, а ему нужен доступ в 0 и у него в Win2003 ничего не получается? А почему же тогда в 7ке та же ситуация, но уже со службой ouidetect?


    9 октября 2013 г. 9:33
  • То есть "сетевого сканирования"?
    Различные устройства, умеющие сканировать на сетевую шару или email... как написал выше - это уже точно не с этим оборудованием, что у вас...
    И если возвращаться к "Interactive Services Detection". Не могли бы пояснить возможную логику работы? Т.е. допустим я в сессии 0, драйвер в сесии 1, а ему нужен доступ в 0 и у него в Win2003 ничего не получается?
    драйвер сам по себе вообще не принадлежит никакой сессии, а вот службы/приложения пользовательского режима могут работать уже в различных сессиях/сеансах... просто в 2008 нулевой сеанс оставили исключительно для служб, но в случае если служба штатными методами "просит" какого-либо взаимодействия на экране - ISD обнаруживает это и выдаёт запрос, предлагая "пообщаться"... в статье выше описаны нюансы с x64-системами... но повторюсь - ISD не покрывает всех возможных ситуаций...

    Active Directory? Ask me how.

    9 октября 2013 г. 9:39
    Отвечающий
  • Про сетевое сканирование понятно, почему-то подумал что на системном уровне что-то имеете в виду.

    Хм, а реально менять принадлежность приложению/службы сессии? что-то наподобие runas?

    9 октября 2013 г. 10:53
  • Я тут что подумал. Мы тут о сессиях. А в них ли дело, если эвент при клике на хардварную кнопку есть и в терминальном режиме? Т.е. запускается диалог wiaacmrg.exe выбора программы сканирования, который, в свою очередь, запускается службой DcomLaunch и вверх по цепочке services - winlogon - smss - system. У всех сессия нулевая. И если выбрать руками нужную программу сканирования из этого диалога, как я уже писал, она запускается и отрабатывает. И второй раз можно это проделать... Но если только оставить выбор автоматом, т.е. ткнуть на чекбокс "Всегда использовать выбранную программу", то при последующих манипуляциях со сканером ничего не происходит... Ящик Пандоры прям.
    9 октября 2013 г. 17:12
  • А в них ли дело, если эвент при клике на хардварную кнопку есть и в терминальном режиме? Т.е. запускается диалог wiaacmrg.exe выбора программы сканирования, который, в свою очередь, запускается службой DcomLaunch и вверх по цепочке services - winlogon - smss - system. У всех сессия нулевая. И если выбрать руками нужную программу сканирования из этого диалога, как я уже писал, она запускается и отрабатывает. И второй раз можно это проделать... Но если только оставить выбор автоматом, т.е. ткнуть на чекбокс "Всегда использовать выбранную программу", то при последующих манипуляциях со сканером ничего не происходит...
    Ну тут только брать Process Monitor и писать pml'ку во время экспериментов... потом уже догадываться, но дело грязное достаточно... сам event конечно не отловить напрямую, но мысли возникнуть могут

    Active Directory? Ask me how.

    10 октября 2013 г. 9:37
    Отвечающий
  • Хм, спасибо за совет, буду дальше копать. К сожалению сейчас под рукой нет сканера, а вообще думаю мысль о пермишнах DCOM. wiaacmgr ведь запускается службой dcomlaunch, а в оснастке dcomcnfg есть настройки DCOM wiaacmgr... Вот и думаю поиграться сней для начала, посмотрим что из этого выйдет.
    10 октября 2013 г. 10:49
  • Вернулся к проблеме. Настройки DCOM ни к чему не привели. Вышел из положения через задний проход: подключаюсь не с ключём /admin, а создавая новый сеанс и потом ,используя команду "shadow 0", имею доступ к незамутнённой консоли, где всё работает. Твики реестра, чтобы shadow заработал:

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
    “AllowRemoteRPC”=dword:00000001

    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
    «Shadow»=dword:00000002

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

    В частности, возможно ли автоматом релогиниться после завершения rdp-сессии. Т.е. чтобы десктоп снова работал в "правильном" консольном режиме.


    15 октября 2013 г. 19:56