Может ли сервис порождать сеанс входа в систему? Построить серверные беды

Чтобы выполнить некоторые приемочные тесты на моем сервере сборки, мне нужно постоянно открывать сеанс пользователя, вошедшего в систему (в среде белого тестирования должен быть "экран" для тестирования пользовательских интерфейсов WPF). Это, очевидно, хрупкая установка, и она вносит немного трения в наш процесс.

Возможно ли, чтобы служба Windows работала в фоновом режиме, которая затем может "порождать" сеанс, в который она входит как пользователь, выполняет некоторую работу (в данном случае тестирование) и затем выходит из системы? Или, может быть, есть лучший способ справиться с моей ситуацией, чем то, что мы делаем сейчас? Это расстраивает, потому что, например, в случае сбоя приложения в какой-то момент появляется диалоговое окно исключения, замораживая наш сервер сборки. Я думал отключить доктора Уотсона, чтобы справиться с этим, но у меня такое чувство, что я иду по пути, чреватому опасностью.

3 ответа

Прежде всего, немного больше информации о вашей среде помогает. Я предполагаю, что это либо Windows 2003, либо Windows 2008 Server.

Если честно, я не эксперт в этом отношении, но кто использует эту коробку? Если у вас есть права администратора, вы можете использовать psexec (если вы не слышали об этом, это бесплатная утилита Sysinternals). Вы можете запустить его в сеансе консоли (например, с помощью интерактивного рабочего стола на языке psexec). Если вы автоматически авторизуетесь в окне с правильными настройками реестра, PsExec может сделать это, если настройки безопасности будут прокляты. Разделы реестра включают в себя хранение пароля в виде открытого текста, поэтому я бы заблокировал такую ​​учетную запись.

PsExec выполняет программу в удаленной системе, где удаленно выполняемые консольные приложения выполняются в интерактивном режиме.

Usage: psexec [\\computer[,computer2[,...] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,...] cmd [arguments]

. . .

     -d         Don't wait for process to terminate (non-interactive).
     -i         Run the program so that it interacts with the desktop of the

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

 %SYSTEMDRIVE%\path\to\psexec.exe -i -d C:\path\to\your\app.exe

Теперь, если у вас есть один из продуктов Windows Server, я думаю, что вы можете время от времени входить в систему с помощью RDP (mstsc.exe), используя console параметр, теперь admin параметр в Windows 2008

Опять же, это бессвязный бродяга. Я мог бы быть далеко от базы с этой работой. Кто-то более знающий может помочь.

Весь сценарий "входи и работай" представляет собой проблему курицы или яйца.

Я бы начал с AutoHotkey и посмотрел, смогу ли я заставить его автоматизировать элементы пользовательского интерфейса, которыми я должен манипулировать. Еще в дни w2K у меня была группа машин, где мы блокировали наследование GPO, чтобы явно разрешить "не использовать ctrl-alt-del", а затем использовали autoexec.bat для запуска процесса. Если вы можете достичь этого, AHK может автоматизировать все остальное. В худшем случае вам может понадобиться использовать AHK для автоматизации сеанса VNC, чтобы обойти сложности входа в систему напрямую.

Я не заинтересован в стратегии "Сервис". Есть ограничения между сервисами и пользовательским интерфейсом; опция "разрешить службе взаимодействовать с рабочим столом" указывает на проблему, которая может у вас возникнуть.

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

Очевидно, что вам нужны физические средства управления безопасностью сервера, если это не виртуальная машина.

Запустите необходимые службы тестирования в качестве автозагрузки для пользователя с автоматическим входом. Если происходит сбой, перезагрузите компьютер (через взаимодействие по сценарию с DRAC, iLO, VMware ESX, независимо от того, на чем он работает), и службы запустятся заново.

Другие вопросы по тегам