2009-11-06 1 views
0

У меня есть программа, которая иногда появляется на экране и выводит сообщение с помощью vb.net. Есть ли способ запустить и отобразить его, даже если компьютер заблокирован или никто не зарегистрирован? Благодарю.Отображение программы даже при заблокированном компьютере?

+0

В принципе, если никто не вошел в систему, то программы на самом деле не имеют доступа к дисплею в любой форме. –

+1

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

+0

Как насчет смены обоев? – recursive

ответ

3

Одним из способов частично обойти это было бы создание экранной заставки, которая могла бы опросить службу для сообщений. Служба должна запускаться при загрузке (НЕ при входе в систему - потому что вы, возможно, еще никого не вошли в систему!).

Экранная заставка должна быть установлена ​​как заставка для входа в систему, так и экранная заставка пользователя. И вам нужно будет установить короткие тайм-ауты экранной заставки на экранах входа (я не знаю, насколько легко это является).

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

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

1

Проще говоря, нет нет.

+1

Затем как Cisco VPN Client и CRYPTOCard Authenticator запускают полные приложения после загрузки до входа в систему? Или это просто невозможно в VB.NET? – HardCode

1

Программа (например, служба) может запускаться, если вы не вошли в систему или машина находится в режиме экранной заставки, однако она не может взаимодействовать с экраном. Вы можете отправить, например, сообщение электронной почты/SMS/HTTP POST на другое устройство, если вы хотите что-то предупредить.

3

Единственный способ, которым я знаю, что приложение может отображать пользовательский интерфейс на экране входа в систему, - это вызов API MessageBox с флагом MB_SERVICENOTIFICATION. Этот флаг предназначен для использования в системных критических сообщениях, чтобы предупредить пользователя на консоли о том, что что-то пошло ужасно неправильно, поэтому оно появится, даже если машина заблокирована.

Это не диалоговое окно, это всего лишь окно сообщения, поэтому нет реального риска для безопасности, связанного с полем сообщения.

Сложно то, что Windows 95 и Windows NT использовали одно значение для двух флагов - MB_TOPMOST и MB_SERVICENOTIFICATION. Поэтому, если вы запускаете программу, предназначенную для Windows 95, вы можете установить флаг MB_TOPMOST и неожиданно получить поведение MB_SERVICENOTIFICATION при запуске в Windows XP (и за ее пределами). Вы можете увидеть это в определении для флага MB_SERVICENOTIFICATION в winuser.h:

#define MB_TOPMOST      0x00040000L 
#ifdef _WIN32_WINNT 
#if (_WIN32_WINNT >= 0x0400) 
#define MB_SERVICE_NOTIFICATION   0x00200000L 
#else 
#define MB_SERVICE_NOTIFICATION   0x00040000L 
#endif 
#define MB_SERVICE_NOTIFICATION_NT3X  0x00040000L 
#endif 
+0

Сколько настроек доступно для этого окна? – Shawn

+0

Это MessageBox.Вы можете установить значок, текст подписи, текст окна, и вы можете управлять отображаемыми кнопками. Причина, по которой безопасно, чтобы это окно было помещено на защищенный рабочий стол, состоит в том, что на нем может быть очень ограниченный набор настроек. –

Смежные вопросы