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



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Что вы пытаетесь сделать из того, что существенно отличается от защищенных пользователей? Я видел некоторые проблемы с всплывающими окнами, но в остальном чистый JavaScript, как правило, меньше страдает. Если вы обнаружите, что блок кода не выполняется, почему бы не выполнить проверку после попытки выполнения, чтобы увидеть, соответствует ли документ ожидаемому состоянию, и предупредить, если нет.
Если он использует ActiveX, у MS есть API защищенного режима: http://msdn.microsoft.com/en-us/library/ms537316.aspx
Защищенный режим настраивается, поэтому у вас действительно нет надежного способа его обнаружения на основе нарушения действия. И многие пользователи отключают UAC, поэтому определение по версии тоже не сработает (не говоря уже о том, что у вас может быть такая же головная боль с IE 8. Всегда лучше проверять, работает ли что-то, а не предполагать по версии).
Adobe Flash может вести себя иначе (или не так, как ожидалось) в Vista IE7 Protected Mode. Намерение состоит в том, чтобы предоставить эту обратную связь пользователю.
Я просмотрел документацию MSDN для Защищенный режим API из 6т7м4, и могу ли я вызвать ieframe.dll из javascript, например:
var axo = new ActiveXObject("ieframe.dll");
Я мог бы получить доступ к функции IEIsProtectedModeProcess(), но я считаю, что она недоступна по соображениям безопасности.
Вы должны включить эти обновления как правки в исходный вопрос.
Нет, по очевидным причинам вы не можете просто вызывать произвольные функции нативного кода из JavaScript.
Если бы у меня был Flash, который не работал в защищенном режиме, я бы попытался исправить его использование Flash, чтобы обойти это. Многие пользователи не поймут проблему, если вы ее объясните, а те, кто понимает, могут не захотеть отключать защищенный режим. (если, конечно, у вас нет безопасного обходного пути ...)