Изоляция привилегий пользовательского интерфейса (UIPI):
Microsoft Windows Vista и более поздние версии.
Отправка сообщения зависит от пользователя
Изоляция привилегий интерфейса (UIPI).
Поток процесса может отправить
сообщения только в очереди сообщений
темы в процессах меньшего или
равный уровень целостности.
Источник
Вы можете прочитать о Изоляция привилегий интерфейса пользователя (UIPI) здесь .
Чтобы обойти это, вы можете установить для uiAccess значение true в файле манифеста. Вы также должны убедиться, что ваше приложение подписано с использованием authenticode с сертификатом от подписывающего органа, такого как VeriSign. Это может стать довольно дорогим.
Изоляция сеанса 0:
Я также считаю, что вы не можете вызывать SendMessage между сеансами. Так что если у вас есть служба, запущенная в сеансе 0, вам нужно найти другое средство для связи с вашим процессом, которое будет работать в сеансе> 0. Пример: через канал.
В Windows Vista, Windows 2008 Server и более поздних версиях все службы работают в сеансе 0, а все приложения, которые вы запускаете, работают в сеансе> 0. Это называется изоляцией сеанса 0. Вот хороший документ, который содержит информацию о изоляции сеанса 0 .
Если у вас нет доступа к источнику программы, в которую вы хотите отправлять сообщения, вы можете обойти это, создав приложение, которое взаимодействует с вашим сервисом и действует как прокси для передачи сообщения приложению в это же сеанс.
Общий:
Если вы разрабатываете свое приложение на pre-Vista и оно работает нормально. Существует очень высокий шанс того, что он будет сломан в Vista.