Вопрос про UAC (User Account Control). Доступ к файлам

Тема в разделе "WASM.WIN32", создана пользователем Gulliver, 7 апр 2011.

  1. Gulliver

    Gulliver New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2010
    Сообщения:
    3
    Всем привет.

    Такая проблема. Windows Vista, UAC включен. Программа с UAC Execution Level = requireAdministrator (инсталлятор) запускает вторую программу с UAC Execution Level = asInvoker. Вторая программа соотв. запускается в этом случае As Administrator. Эта вторая программа создаёт несколько файлов в которых хранит своё состояние. После перезапуска второй программы с обычными пользовательскими правами -- она эти файлы перезаписать не может, т.к. те были созданы с админскими правами. Удалить их FAR-ом тоже не получается. Единственный вариант -- через эксплорер, но винда при этом запрашивает специальное подтверждение. Ситуация совсем не здоровая -- получается что если программа была запущена инсталлятором с админскими правами -- любой файл который она создаст оказывается залоченым.

    Перепробовал несколько вариантов с параметрами в манифесте и вообще с отключенным манифестом -- толку нет.

    Как такое разрулить ?
     
  2. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    Не любой, а тот который создаётся в защищённых директориях. К примеру, в Program Files сохранять результаты работы программы - плохой тон, для этого есть Application Data.
     
  3. Gulliver

    Gulliver New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2010
    Сообщения:
    3
    Речь как раз о Application Data -- там программа файлы хранит
     
  4. gorodon

    gorodon New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2009
    Сообщения:
    301
    Gulliver, программе необходимо управлять правами доступа к файлам (GetFileSecurity/SetFileSecurity)
     
  5. Gulliver

    Gulliver New Member

    Публикаций:
    0
    Регистрация:
    24 дек 2010
    Сообщения:
    3
    Да, уже дошел до этого. У файлов созданых админским процессом не прописаны никакие права для группы BUILTIN\Users..
    С GetFileSecurity/SetNamedSecurityInfo никогда не работал. Можете подсказать как для созданного файла включить права встроенной группе пользователей ?
     
  6. gorodon

    gorodon New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2009
    Сообщения:
    301
    Gulliver

    Нужно создать/инициализировать соответствующий SECURITY_DESCRIPTOR

    http://msdn.microsoft.com/en-us/library/aa446595