Я использую Windows 7 и Microsoft Visual Studio 2010.
Я создал простой проект с одним MessageBox()
вызывать WinMain()
, Название проекта "update"
, поэтому имя EXE-файла update.exe
, Я отключил генерацию манифеста в настройках компоновщика. Но когда я пытаюсь начать отладку в Visual Studio, он говорит, что мое приложение требует повышения прав.
Я решил запустить приложение, щелкнув по нему в проводнике Windows, но оно по-прежнему требует прав администратора. Я переименовал его в update12345.exe
и к 12345update12345.exe
, но это все еще требует возвышения.
Но когда я переименовал его в 12345.exe
, он работал отлично, не запрашивая прав администратора! Я думал, что Windows требует повышения прав для всех файлов, имя которых содержит "update"
подстрока. Итак, я взял другой файл (debugview.exe
из SysInternals DebugView) и переименовал его в update.exe
— но это работает без возвышения.
В чем может быть причина этого странного поведения?
Если ваше приложение не содержит запрашиваемый уровень исполнения в своем манифесте, технология обнаружения установщика проверяет, содержит ли его имя «обновление», «установка» и т. Д., Чтобы определить, является ли приложение установщиком.
Это объясняется тем, что ваше приложение требует UAC при переименовании в «Обновить«, и другое приложение, кроме манифеста нет.