Вы должны понимать три взаимосвязанных понятия: сеансы, оконные станции и рабочие столы. Но поскольку между сеансами и станциями существуют взаимно-однозначные отношения, мы можем широко игнорировать станции для этого обсуждения. Сеанс содержит станцию (winSta0 - единственная интерактивная станция), а станции содержат один или несколько рабочих столов.
Теперь архитектура сессии отличается в зависимости от версии Windows. Для NT <= 5 (XP / 2003 и все, что до них) службы выполняются в сеансе 0 вместе с приложениями интерактивного пользователя. Вот почему вы можете настроить службы для взаимодействия с рабочим столом в этих версиях Windows NT - они находятся в одном сеансе. Для NT> = 6 (Vista, Server 2008 и далее) службы существуют в сеансе 0, но интерактивный рабочий стол находится в другом сеансе. Это то, что известно как «усиление службы», и в основном это исправление безопасности.
Так как приложения сеанса 0 не могут получить доступ к интерактивной консоли, для них нет смысла пытаться отображать пользовательский интерфейс любого вида.
Просто чтобы сделать это еще более запутанным, в Vista есть временный ключ для решения этой ситуации: если приложение в сеансе 0 пытается создать диалоговое окно, Windows перехватит это и выдаст предупреждение пользователю, чтобы они переключились на ( Я предполагаю временный рабочий стол, где они могут взаимодействовать с диалогом. Однако эта мера явно временная, и на нее нельзя полагаться в будущих выпусках Windows. Я видел, как это работает в нативном коде, но я подозреваю, что вы находитесь в управляемом коде, и среда выполнения достаточно умна, чтобы уловить ваше поведение и доставить метафорический удар по задним конечностям: -).