2015-11-06 3 views
0

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

Это обычное решение для установки, которое сообщает Windows: «Привет, я установщик. Что-то устанавливается».? Windows не анализирует фактическое поведение исполняемого файла, не так ли?

+1

Ожидается, что в современных приложениях (в том числе сторонних установщиках) будет содержаться запись в манифесте, указывающая, требуется ли повышение. Для старых приложений Windows пытается угадать. Я не знаю, в какой степени анализируется ожидаемое поведение исполняемого файла, поскольку алгоритм никогда не был полностью документирован AFAIK. Однако мы знаем, что догадаться, прежде чем исполняемый файл начнет работать. –

+1

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

+0

@HarryJohnston Да, мне было интересно об этом. Похоже, что для установщиков '.exe' Windows запрашивает повышение до того, как что-либо произойдет, но большинство файлов' .msi' не запрашивают, пока он выполнит необходимый ему шаг. Я не верю, что для _all_ исполняемых файлов требуется возвышение в моей системе, однако, только несколько инсталляторов '.exe', которые мне пришлось использовать. –

ответ

1

В случае .MSI, конечно, Windows автоматически распознает вашу установку что-то. Я думаю, что ваш вопрос больше связан с тем, что о чем-то другом, кроме MSI? Windows имеет некоторые эвристики, созданные в том, что AFAIK управляется командой совместимости приложений. Они делают что-то, чтобы определить, что такое настройка (например, имя файла, имя процесса, проверка сводного информационного потока и т. Д.) И выполнять различные функции, такие как обнаружение возможной неудачной установки, вопрос о том, была ли она установкой и если она не удалась и они выполняют прокладки совместимости приложений, такие как версия, лежащая и принудительное повышение высоты UAC.

Вы должны избегать этого уродливого мира, который я создал правильно разработанные MSI. :)

+0

имеет смысл, все '.msi' являются установщиками, не так ли? Но, как говорил Гарри в комментариях к этому вопросу, некоторые '.msi' не запрашивают учетные данные, пока не достигнут определенного шага, поэтому у них, похоже, есть динамический процесс возвышения. Эвристика для '.exe' тоже будет иметь большой смысл, но разве это надежная система? Разве кто-то со злым умыслом все еще не сможет написать что-то, что можно «установить» без запуска UAC? –

+1

Это не надежная система для EXE. Они всего лишь прокладки, чтобы попытаться помочь ему работать не на самом деле в плане безопасности. MSI имеет надежную модель безопасности, которая очень хорошо документирована, и для ее описания потребуется глава. –

+0

Итак, '.msi' не только для удобства развертывания и совместимости приложений, но и для обеспечения безопасности? –

0

MSI могут быть созданы для каждого пользователя или для каждой машины. По умолчанию пользовательские установки не будут запрашивать повышение. Установки для каждой машины будут запрашивать возвышение, как только они попадут в значение InstallExecuteSequence.

2

Если ваш вопрос заключается в запросе учетных данных администратора, это нормальное поведение, когда у исполняемого файла есть манифест, в котором говорится, что он требует прав администратора. Я предполагаю, что если вы скажете, что ваш InnoSetup требует прав администратора, он будет включать манифест, требующий повышения, и Windows покажет приглашение на повышение.

Нет такой вещи, как Windows InstallShield, если вы считаете, что InstallShield является продуктом Microsoft Windows. InstallShield - это сторонний продукт, который во многих случаях создает файл MSI. MSI-файлы отмечаются (когда они созданы) относительно того, требуется ли им повышение или нет. Это сводная информация strean Количество слова, которые говорят, требует ли MSI высоты установки или нет:

https://msdn.microsoft.com/en-us/library/aa372870(v=vs.85).aspx

+0

Моя ошибка с битом «InstallShield», я почему-то смущался с UAC. Вопрос обновлен. Значит, издателю важно знать, требует ли установка для повышения? Конечно, должен быть какой-то анализ, который делает Windows, иначе просто нельзя включать этот манифест, и это может показаться немного дырой в безопасности. Или можно просто написать исполняемый файл, который будет выполнять все те же шаги, что и '.msi' или manifest'd' .exe' будет и летать под радаром UAC? –

+1

Технически есть некоторые прошивки InstallShield, распространяемые Windows. :) Они перехватывают движок InstallScript и заменяют другую версию, предоставленную Flexera, Microsoft по причинам appcompat. –

+0

@iAmMortos: здесь нет проблемы с безопасностью. Если вы вошли в систему как стандартный пользователь и запустили программу установки, то либо Windows потребует пароль администратора, либо запускает установщик без прав администратора. Стандартным пользователям разрешено устанавливать программное обеспечение, если установка влияет только на собственную учетную запись пользователя. –

Смежные вопросы