Всем привет. Такая проблема. Windows Vista, UAC включен. Программа с UAC Execution Level = requireAdministrator (инсталлятор) запускает вторую программу с UAC Execution Level = asInvoker. Вторая программа соотв. запускается в этом случае As Administrator. Эта вторая программа создаёт несколько файлов в которых хранит своё состояние. После перезапуска второй программы с обычными пользовательскими правами -- она эти файлы перезаписать не может, т.к. те были созданы с админскими правами. Удалить их FAR-ом тоже не получается. Единственный вариант -- через эксплорер, но винда при этом запрашивает специальное подтверждение. Ситуация совсем не здоровая -- получается что если программа была запущена инсталлятором с админскими правами -- любой файл который она создаст оказывается залоченым. Перепробовал несколько вариантов с параметрами в манифесте и вообще с отключенным манифестом -- толку нет. Как такое разрулить ?
Не любой, а тот который создаётся в защищённых директориях. К примеру, в Program Files сохранять результаты работы программы - плохой тон, для этого есть Application Data.
Да, уже дошел до этого. У файлов созданых админским процессом не прописаны никакие права для группы BUILTIN\Users.. С GetFileSecurity/SetNamedSecurityInfo никогда не работал. Можете подсказать как для созданного файла включить права встроенной группе пользователей ?
Gulliver Нужно создать/инициализировать соответствующий SECURITY_DESCRIPTOR http://msdn.microsoft.com/en-us/library/aa446595