2015-06-30 4 views
1

Я использую Windows 7 и Microsoft Visual Studio 2010.Windows усиливает выравнивание UAC для файлов, если их имена содержат «обновление»?

Я создал простой проект с одним MessageBox() звоним в WinMain(). Название проекта: "update", поэтому имя файла EXE: update.exe. Я отключил манифестацию в настройках компоновщика. Но когда я пытаюсь начать отладку в Visual Studio, он говорит, что мое приложение требует повышения.

Я решил запустить приложение, щелкнув его в проводнике Windows, но для него все еще требуются права администратора. Я переименовал его в update12345.exe и в 12345update12345.exe, но он по-прежнему требует высоты.

Но когда я переименовал его в 12345.exe, он отлично работал без запроса прав администратора! Я думал, что Windows требует возвышения для всех файлов, имя которых содержит "update" подстроку. Итак, я взял другой файл (debugview.exe из SysInternals DebugView) и переименовал его в update.exe - но он работает без повышения.

В чем может быть причина этого странного поведения?

+0

Вы не строите свою программу правильно, ей не хватает манифеста, объявляющего об этом в UAC. Это довольно сложно сделать с Visual Studio, попав в ядро ​​успеха, используя шаблон проекта, чтобы запустить ваш проект. –

+0

Я всегда разрабатывал проекты без манифеста, и они отлично работали. Мой проект предназначен для работы в любой системе Windows, и он не делает ничего, что требует UAC. Но проблема в имени файла: если он содержит «обновление», он требует UAC, если он не запускается и работает отлично. – deselect

+0

Hmya, они отлично работают, пока вы не нанесете какую-то накладку на стену. Как этот. У вас будет больше сюрпризов, когда вы делаете такие вещи, как рвота в реестре и доступ к файлам в запрещенных местах. Присутствие манифеста не влияет на старые версии Windows, которые не знают, что они означают. –

ответ

3

Если ваше приложение не содержит requestExecutionLevel в его манифестах, технология обнаружения установщика проверяет, включает ли его имя «обновление», «установить» и т. Д., Чтобы определить, является ли приложение установщика. Это объясняется тем, что для вашего приложения требуется UAC при переименовании в «update» и в другом приложении, чем в манифесте.