Изоляция привилегий пользовательского интерфейса в XP SP3 - PullRequest
0 голосов
/ 07 ноября 2008

Только после небольшого подтверждения действительно:

В XP SP3 реализован механизм изоляции привилегий пользовательского интерфейса (UIPI), обнаруженный в Vista?

Назад история для человеческого интереса :) Недавно я передал исходный код C ++ довольно большому приложению. К сожалению, единственный разработчик этого приложения, с момента его создания в середине 90-х, недавно скончался, оставив нас в довольно трудном положении, пока мы не сможем нанять нового разработчика.

В последнее время пользователи сообщают, что приложение случайно перестало работать и / или некоторые ранее работавшие функции, похоже, вообще не работают «хотя ничего не изменило мой конец!». «Ничего не изменилось» оказалось SP3:)

Зная об этом, и хотя я не парень на C / C ++, я подумал, что взгляну на источник, чтобы узнать, смогу ли я что-нибудь выяснить (потратив много времени на изучение брандмауэров, вирусов). сканеры и другие внешние факторы).

Я проследил одну ошибку до вызова функции Api SendMessage и пошел посмотреть документы MSDN. В нем четко указано «Microsoft Windows Vista и более поздние версии. Отправка сообщений подлежит изоляции привилегий пользовательского интерфейса (UIPI). Поток процесса может отправлять сообщения только в очереди сообщений потоков в процессах с меньшим или равным уровнем целостности». Хотя я не уверен на 100%, это, вероятно, является вероятной причиной.

Ура!

Ленни.

Ответы [ 2 ]

4 голосов
/ 07 ноября 2008

Нет, XP SP3 не реализует никаких изменений безопасности Vista, по крайней мере, не связанных с оконным менеджером. На самом деле вы не особо помогли, но какую ошибку вы получаете, связанную с SendMessage ()?

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

0 голосов
/ 07 ноября 2008

UIPI не сообщает об ошибках в SendMessage - если вы получаете сообщение об ошибке, значит это что-то другое. А остальные комментаторы правы: UIPI работает только на Vista, и вы не получите ничего от этого в любом случае , если вы не попытаетесь отправить сообщение службе, например.

...