Вызовите другую точку доступа с пользовательским интерфейсом в NT-сервере - PullRequest
0 голосов
/ 11 мая 2009

В Windows Vista у меня работает фоновое приложение NT, и я хочу, чтобы сервер запускал Notepad.exe, когда сервер получил определенную команду, НО это не работает, я пробовал использовать функции shellexec, winexec и createprocess Все провалились. Блокнот всегда работает на рабочем столе сервера, Vista покажет сообщение с просьбой переключить его. есть ли способ запустить его правильно?

Ответы [ 2 ]

0 голосов
/ 11 мая 2009

Это связано с изоляцией Vista Session 0 . Ваша служба работает в сеансе служб терминалов 0, ваш пользователь вошел в сеанс 1 или выше, и взаимодействие между ними строго ограничено.

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

0 голосов
/ 11 мая 2009

Вы пытались вызвать CreateProcess с именем рабочего стола, на котором вы хотите открыть его, в lpDesktop члене структуры STARTUPINFO? См. ч е г е .

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