C #. NET - как определить, доступен ли каталог для записи, с UAC или без?

Я работаю над программой, которая должна копировать файл в заданный каталог файловой системы. Он должен работать как в ОС с поддержкой UAC (Vista, 7), так и в XP. Чтобы обойти проблему записи в каталог, где требуется повышение прав UAC, приложение фактически запускает другой процесс с манифестом, в котором говорится, что UAC требуется. Это генерирует приглашение, а затем копирует, когда пользователь подтверждает.

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

Мой вопрос таков: для данного каталога, как мне надежно определить, может ли текущий пользователь скопировать (и потенциально перезаписать) файл в этот каталог, и если я могу, как это сделать Я определяю, требуется ли повышение прав UAC? ​​

В XP это может быть так же просто, как проверить, предоставлено ли разрешение «Разрешить запись», но в Vista / 7 есть каталоги, в которых это разрешение не предоставляется, но это действие все еще возможно с UAC.

7
задан growse 22 September 2010 в 12:49
поделиться