Невозможно удалить файлы в папке «program files \ my app»: system.unauthorizedaccessexception: доступ к пути '' запрещен

Я пытаюсь создать программу обновления, которая заменит файлы в папке без установки установщика. В рамках этого процесса мне нужно иметь возможность удалять старые файлы и заменять их новыми. Я попробовал и получил исключение UnAuthorizedException. Я запускаю программу обновления как администратор. Я пробовал следующее а. Установка для атрибута файла и папки значения Normal [Доступ к пути запрещен при попытке удалить определенный каталог б. Принятие права владения папкой и содержащимися в ней файлами [Принятие права владения файлом или папкой c. Изменение разрешений и предоставление всем пользователям полного контроля над папкой и файлами [Использование настраиваемого действия в установщике] [Как предоставить разрешения на чтение / запись для папки во время установки с использованием .NET d. Запуск программы обновления из службы Windows

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

Пожалуйста, попробуйте предоставить доступ к пути для «Все» с помощью «FullControl»

gulshan arora 10.09.2018 08:40

Вы можете попробовать это: superuser.com/questions/1031275/…

Nhan Phan 10.09.2018 08:44

Спасибо @gulshanarora и Нхан Фан. Это сработало. Не были удалены файлы, которые использовались приложением.

Sagar Kapadia 10.09.2018 10:55

Спасибо ! Не могли бы вы "Проголосовать" за мой ответ, чтобы он помог другим.

gulshan arora 10.09.2018 11:43

Для записи: замена используемых файлов и выполнение операций с повышенными правами, таких как замена файлов в %ProgramFiles%, являются ключевыми функциями, поддерживаемыми пакетами MSI (установщик Windows), а также другими типами пакетов. Существуют расширенные функции, такие как Менеджер перезапуска, для обработки используемых файлов и любых необходимых перезагрузок. И есть много других проблем: проверка дискового пространства, транзакция и откат и т. д. Использование этой функции поможет вам в долгосрочной перспективе. Только мои 2 цента из опыта. Все зависит от размера вашего продукта.

Stein Åsmul 10.09.2018 12:02
1
5
79
1

Ответы 1

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

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

При этом простая замена файлов, установленных с помощью установщика Windows MSI, не поддерживается. Файлы необходимо заменить обновлением установщика Windows, например MSP-файлом исправления или обновленным файлом MSI. Установщик Windows отслеживает каждый установленный файл, его версию, обновлялся он или нет, а также хэш файла. Замена файла без использования установщика Windows может привести к неожиданным запросам на исходный файл MSI, чтобы Windows могла восстановить файлы до их исходного установленного состояния. Вы можете обнаружить, что переход в «Программы и компоненты» (или щелчок правой кнопкой мыши по файлу MSI) и выбор «Ремонт» также восстанавливают их.

Спасибо Phil DW за предложение по поводу файлов .msp исправлений. Я тоже изучу этот вариант

Sagar Kapadia 18.09.2018 07:15

Другие вопросы по теме