Как заставить ваше приложение MFC обходить UAC в Windows7 и Vista - PullRequest
3 голосов
/ 12 февраля 2010

У меня есть приложение MFC, разработанное в VS Studio 2008, которое читает и пишет в файл JSON в своей установочной папке. Он отлично работает в Vista (администратор), но только когда UAC выключен. Когда UAC включен, приложение не может записать в свой файл JSON. Я подумал, что должен был создать файл манифеста, но на самом деле я не пытался его создать.

Вопросы:

  1. ссылка: http://msdn.microsoft.com/en-us/library/bb384691.aspx. Здесь говорится, что вы можете просто установить параметры компоновщика в среде разработки Visual Studio. Какие значения мне нужно выбрать для:
    а) Включить контроль учетных записей (UAC)? [Я пытался НЕТ].

    б) Уровень выполнения UAC? [Я пробовал самый высокий доступный].

    в) и защита UAC Bypass UI? [Я попробовал Да].

  2. Нужно ли добавлять файл манифеста в программный пакет (exe, Dll и т. Д.)?

Спасибо ...

Ответы [ 5 ]

12 голосов
/ 12 февраля 2010

Вся концепция UAC в том, что вы не можете обойти это. Если бы ты мог, это было бы бесполезно.

Единственное решение (которое вы должны сделать в любом случае, не только из-за UAC) - это никогда не записывать файлы в папку установки, а в% APPDATA%, где он находится.

3 голосов
/ 12 февраля 2010

Добавляя файл манифеста, вы можете только заявить, что приложению требуется разрешение UAC. Таким образом, пользователю будет предложено ввести UAC при запуске приложения.

Если это то, что вы хотите здесь вы можете найти описание, как это сделать.

Другой подход заключается в установке службы, которая работает с учетной записью LocalSystem и которой разрешено делать (почти) все что угодно без запроса разрешения UAC. Чтобы это работало, вы должны реализовать межпроцессное взаимодействие между вашим приложением пользовательского интерфейса и службой. Объекты ядра, совместно используемые процессами, должны создаваться из службы с соответствующими атрибутами безопасности, чтобы к ним обращались из программ без повышенных прав. Установка службы предложит пользователю UAC (как и большинство других установок)

3 голосов
/ 12 февраля 2010

Вы должны скопировать этот файл в AppData. Изменение файла в Program Files всегда вызывает приглашение UAC. Эта операция требует прав администратора, и манифест вам не поможет.

0 голосов
/ 24 мая 2011

Вы упомянули, что пытались указать исполняемый файл как

  • Уровень выполнения UAC: highestAvailable

Должно быть установлено requireAdministrator.

Разница в том, что highestAvailable будет повышаться только в том случае, если пользователь действительно является администратором, которого (UAC) лишили его привилегий администратора. Если они действительно стандартные пользователи, то это не повысит.

С другой стороны, requireAdministrator будет требовать , чтобы они поднялись. Если пользователь не является администратором, ему будет предложено ввести имя пользователя и пароль того, кто является администратором; им придется позвонить кому-нибудь, чтобы прийти и ввести свое имя пользователя и пароль.

Если пользователь уже был администратором, requireAdministrator просто попросит его Продолжить .

0 голосов
/ 29 июля 2010

Установите значение EnableLUA DWORD в HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System на 0 и перезагрузите компьютер.

это отключит UAC без проблем, я бы сделал это для всех ваших пользователей, с или без разрешения, зависит от вас, потому что Vista UAC настолько ужасна, что я верю, что меньше людей, у которых это есть, к лучшему ( только в Vista) теперь лучше в win7.

весело проведите время с моим трюком в реестре:)

работает и в win7, дайте мне знать, как вы с ней справились.

оказывается, что stackoverflow подвергает цензуре комментарии, которые показывают, как отключить UAC, поскольку мой пост / ветка с ответом выше от старательного ответчика был удален.

...