Понимание UAC в windows vista / 7


Я действительно не понимаю Windows UAC...

Мне нужно, чтобы моя программа могла обновлять и добавлять файлы в определенный каталог, принадлежащий программе. Этот каталог может быть подкаталогом приложения в программных файлах, например c:Program файлыMyAppData или он может быть установлен в другом месте.

Я считаю, что если он находится в разделе Program Files, то моя программа не сможет писать там, если она не работает от имени администратора и не имеет повышенного доступа права. Это правильно?

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

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

Или есть лучший способ достичь этого, о котором я не думаю? Моя программа обновления должна быть на java, поэтому получение повышенных привилегий-это боль. Я предполагаю, что мне нужно будет написать оболочку C++ для запуска виртуальной машины java, чтобы я мог дать этой оболочке соответствующий манифест. Не исключено, но я так не думаю. очень хочется это сделать.

2 2
uac

2 ответа:

Обычно, когда вам нужны как защищенные, так и незащищенные режимы UAC, вы делаете следующее.

  1. Создайте два исполняемых файла (один должен быть основным и не требовать привилегий для какой-либо операции, Второй должен иметь возможность выполнять операции привилегий).
  2. запустите первый (основной), используя ограниченные привилегии.
  3. Когда вам нужно выполнить привилегированную операцию, создайте новый процесс с правами администратора (появится окно UAC) и запустите второй применение в нем.
  4. Когда закончите со вторым приложением, закройте его, и вы вернетесь в ограниченный режим.

Именно так работает VMWare Workstation при изменении глобальных параметров.

Edit: изменение разрешений для папки не является хорошим подходом. Это просто грязный хак, потому что любой может написать в эту папку, и это просто аннулирует роль UAC - в конце концов, это роль UAC: предотвратить непривилегированные изменения в специальных папках.

Попробуйте изменить параметры безопасности каталога Вашего приложения при установке, чтобы разрешить" аутентифицированным пользователям " права на запись.