Я работаю над программой, которая должна копировать файл в заданный каталог файловой системы. Он должен работать как в ОС с поддержкой UAC (Vista, 7), так и в XP. Чтобы обойти проблему записи в каталог, где требуется повышение прав UAC, приложение фактически запускает другой процесс с манифестом, в котором говорится, что UAC требуется. Это генерирует приглашение, а затем копирует, когда пользователь подтверждает.
Насколько я могу судить, каталог может иметь три различных логических состояния разрешений - возможность записи без повышения прав UAC, записываемый с повышением уровня UAC, но не доступный для записи.
Мой вопрос таков: для данного каталога, как мне надежно определить, может ли текущий пользователь скопировать (и потенциально перезаписать) файл в этот каталог, и если я могу, как это сделать Я определяю, требуется ли повышение прав UAC?
В XP это может быть так же просто, как проверить, предоставлено ли разрешение «Разрешить запись», но в Vista / 7 есть каталоги, в которых это разрешение не предоставляется, но это действие все еще возможно с UAC.