Итак, вот совок:
Некоторое время назад я написал крошечное приложение на C#, которое отображает имя хоста, IP-адрес, отображаемую дату, статус разморозки (мы используем DeepFreeze), текущий домен и текущую дату/время для отображения на экране приветствия наших лабораторных компьютеров с Windows 7. . Это должно было заменить наш предыдущий информационный блок, который был установлен статически при запуске и фактически встраивал текст в фон, на что-то немного более динамичное и функциональное. Приложение использует таймер для обновления IP-адреса, состояния глубокой заморозки и часов каждую секунду, а также проверяет, вошел ли пользователь в систему, и убивает себя, когда обнаруживает такое состояние.
Если мы просто запустим его через наш сценарий запуска (установленный с помощью групповой политики), он будет держать сценарий открытым, и машина никогда не дойдет до приглашения для входа в систему. Если мы используем что-то вроде команд start или cmd, чтобы запустить его в отдельной оболочке/процессе, он будет работать до тех пор, пока сценарий запуска не завершится, и в этот момент Windows, похоже, очистит все дочерние процессы сценария. В настоящее время мы можем обойти это, используя psexec -s -d -i -x
для его запуска, что позволяет ему сохраняться после завершения сценария запуска, но может быть невероятно медленным, добавляя от 5 секунд до более минуты к нашему времени запуска.
Мы экспериментировали с использованием другого приложения C# для запуска процесса через класс Process, используя вызовы WMI (Win32_Process и Win32_ProcessStartup) с различными флагами запуска и т. д., но все они заканчиваются одним и тем же результатом завершения сценария и получения процесса информационного блока. убит. Я возился с переписыванием приложения как службы, но службы никогда не были предназначены для взаимодействия с рабочим столом, не говоря уже об окне входа в систему, и казалось, что заставить вещи работать в правильном контексте никогда не получалось.
Итак, на вопрос: есть ли у кого-нибудь хороший способ сделать это? Запустить задачу, чтобы она не зависела от сценария запуска и запускалась поверх экрана приветствия?