Как побороть UAC .Net

Здравствуйте. Может кто знает как договорится с этой заразой в винде 10?

Есть программа. Внутри нее запускается контролирующий поток который проверяет файлик который лежит в тоже папке с программой. ProgramFiles или на диске С своя папка создается.
Так вот этот поток не может открыть файлик на чтение. Получается ошибка UnathorizedAccessException.

Прописал манифест приложения:
Вставил ему туда такую строчку:

 <requestedExecutionLevel level="highestAvailable" uiAccess="false" />

Ну да … что то решило но все равно прогу блочат.
Ведь своя же папка, да и только для чтения открывается… что ему нужно то ???

requireAdministrator по идее надежнее https://docs.microsoft.com/en-us/previous-versions/bb756929(v=msdn.10)

хм, как именно?

Вообще для чтения из Program Files по-моему не нужны права админа.


Если это файлы создаваемые своей программой, то лучше в AppData создавать, тогда не нужны права.

Так а зачем требовать прав админа без явной на то причины. Пользователи это не оценят. К тому же в организации может быть своя политика с разделением прав.

Я же говорю. Поток вылетает с ошибкой AccessDenied.

Вот и я думаю что не нужны и тем не менее …

Так то оно да … но туда попасть сложнее если что то пошло не так. Дополнительный ярлык нужно где то пихать.

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

Причем она должна быть общая для всех пользователей.
Environment.SpecialFolder.CommonApplicationData дает “C:\ProgramData” но читаю и говорят что она тоже пользователям для записи недоступна.

Возможно скажу глупость, но всё же…
@WorldMaster, а правой кнопкой мышки на программе и “Запустить от имени администратора” пробовали?

ну и дополнительно - Windows Defender и брандмауэр не мешают ?

Да как бы это плохое очень решение. Естественно под админом работает. Но программа не делает сверхсерьезных изменений. По сути база данных. Просто куда то надо писать логи и есть некоторые данные которые со временем обновляются. Обновление должен мочь делать любой пользователь.

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

Брендмауер?? так он же вроде сетевые подключения блочит. Проблема в UAC если ее отключить то вроде становится нормально. на 7. Но 10 вечно ругается и не дает нормаьно работать. Там даже админ не может софт запустить без клацанья "Именем администратора … "

Program Files предназначена для файлов самой программы (.ехе, библиотеки) устанавливаемой установщиком с правами админа. Поэтому там нужны права, чтоб кто попало не подменил программу.

Для логов и конфигов — AppData.

Вроде писать может только юзер создавший там этот файл. https://stackoverflow.com/a/22107884/964478
Может быть можно админом при установке создать папку и поменять права.

1 лайк