У меня возникла очень странная проблема на машине с Windows 7 x64. Я постараюсь объяснить как можно лучше, поэтому кратко не получится. Заранее большое спасибо за ваше терпение.
Итак, Win 7 x64. Я работаю под учетной записью администратора, и у меня включен UAC. Что происходит, когда программе требуется повышение прав для выполнения задачи - и она знает, как это сделать, без древних исполняемых файлов - если она запущена из папки -user- temp, она просто не запрашивает его, а затем дает сбой.
Полагаю, это не совсем понятно, поэтому давайте пошагово рассмотрим, что происходит, когда я запускаю программу, которой требуется повышение прав из любого каталога. Если я пытаюсь запустить, например, TrueCrypt, я запускаю его, он автоматически определяет, что ему требуется повышение прав, а его у него нет, поэтому он запрашивает его (подсказка UAC, нажмите «да», программа запускается нормально).
Теперь давайте рассмотрим программу, которая запускается из temp. Я выберу установщик NSIS, например Firefox. Я запускаю его, он автоматически распаковывается во temp, а затем из temp запускается setup.exe. Этот исполняемый файл setup.exe должен запрашивать повышение прав, но он этого не делает, просто пытается запуститься в текущем контексте, а затем процесс завершается. Это как если бы в момент проверки повышения прав решили, что оно уже есть, когда это не так.
Но если я запускаю установщик NSIS напрямую с правами администратора, он распаковывается в ту же временную папку, затем setup.exe наследует повышение прав и запускается нормально.
Еще одно странное замечание, которое я должен добавить, заключается в том, что автоматизированные службы обновления, такие как Mozilla или, например, Google Chrome, также не устанавливают обновления. И это еще более странно, потому что эти службы работают с правами администратора и, насколько мне известно, они загружают обновления, а затем запускают установщики с правами администратора. Но происходит то же самое, что и в первом случае, служба запускает setup.exe и автоматически процесс умирает.
ОС установлена уже год и работает нормально до сегодняшнего дня; конечно, я не против переустановить свою рабочую станцию, но мне бы хотелось понять, что здесь происходит. Проблема начала происходить в обычный день, я не устанавливал ничего странного в последнее время.
решение1
Ну, я наконец-то выяснил, что происходит, некоторые разрешения были (непостижимым образом) утеряны в моем временном каталоге для группы "Users". Разрешения на чтение и запись остались нетронутыми, но "traverse directory" и "execute" были отключены. Это приводило к сбою процессов, пытающихся повысить уровень другого исполняемого файла.
Теперь я пытаюсь выяснить, что меняет мои разрешения (возможно, вредоносная программа), но это уже другая история.