Автоматизировать действие входа в Windows - PullRequest
2 голосов
/ 14 июня 2011

У меня есть веб-приложение ASP.NET 4.0, которое использует сторонний API для внешних данных, для работы API требуется имя пользователя / пароль при инициализации, запрашивая графический интерфейс, представленный в виде окна Winform, если я поставлюправильные учетные данные, окно закрывается, инициализация завершается, а затем начинают поступать данные.

Возможно, вы получаете здесь поворот, когда мой рабочий процессор ASP.NET запускает инициализацию API, поэтому я должен буквально бытьна сервере, где расположено веб-приложение для ввода имени пользователя и пароля для API для завершения инициализации, из-за этого ограничения для меня будет проблематичным развертывание веб-приложения в рабочей среде, где пользователям необходимо вводить свои собственные учетные данные API (дапользователи также имеют свои собственные учетные данные для API).

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

Ответы [ 2 ]

1 голос
/ 14 июня 2011

Если это действительно форма WinForms, используемая для входа в систему, вы можете получить к ней доступ через коллекцию OpenForms .Оттуда вы можете найти соответствующие текстовые поля и кнопки.Если API блокирует, вам может потребоваться сделать это из другого потока.Не забудьте использовать Invoke для запуска вашей функции в правильном потоке, как только вы найдете форму.

0 голосов
/ 14 июня 2011

Да - вы можете искать работающее приложение - но есть множество проблем с этим.

  1. Это ненадежно.

  2. Это ненадежно:)

  3. В каком сеансе отображается это окно?Что если кто-то не вошел в систему - процесс зависает?

  4. Как вы упомянули, развертывание сервера очень проблематично.

К вашему сведению - IНе верьте, что вы можете использовать нижеприведенную коллекцию OpenForms - это стороннее приложение.

Вы можете написать программу для поиска этого окна, но в зависимости от контекста (учетная запись пользователя / сеанс Windows), в котором оно работает, вы можете / не сможете ничего с ним сделать.Если он находится в том же процессе, что и учетная запись aspnet, я не могу себе представить, что он может показать окно на вашем рабочем столе, поэтому я представляю, что есть какой-то другой компонент / учетная запись, под которой работает это стороннее приложение.

IsЕсть ли способ получить какой-либо веб-доступ к этому API?Решением этой проблемы будет взлом всех возможных попыток использовать API для Findwindow или перечисление окон определенного процесса.

Таким образом, в зависимости от учетной записи / сеанса, под которым он выполняется, это «возможно» возможно, но вполне возможно для целого ряда проблем.

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

Другой вариант может состоять в том, чтобы (предупреждение о взломе - это полный риск), чтобы процесс выполнялся как само размещенное приложение WCF за пределами IIS, которое получает запрос, а затем пытается найти это окно и отправить соответствующееКоманды для этого с помощью Windows API для ex.SendMessage для щелчков мышью

см. http://social.msdn.microsoft.com/Forums/en-US/vssmartdevicesvbcs/thread/63a9faac-5898-4b10-8a2c-4ebe1aab948e

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...