Проблема с привелегиями в Висте.

Тема в разделе "WASM.NT.KERNEL", создана пользователем nbyte, 21 окт 2007.

  1. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    Здравствуйте.
    У меня сложилась следущая тупиковая ситуация.
    Я сделал драйвер дисплея, которые нормально работает на Xp но на Viste я столкнулся с проблемами доступа.
    Вообщем мой драйвер общается с User-mode при помощи Map-файла который создаёт драйвер при своём старте в папке "\\SystemRoot\\System32\\".
    Со стороны драйвера то все нормально (он может создавать файл изменять), а вот со стороны App(ring 3) то в Viste даже fmOpen неполучается открыть его (с правами админа).
    Тоесть в папке Windows и дочерних нельзя открыть файлы для чтения как я понял.

    Если просто на C:\ его сделать, то както тоже неособо хороший вариант. И в C:\Program files\ тоже неособы потому что виндовс может быть установлен не на C.
    Хочу сделать чтобы этот файл создавался в папке с App(ring 3), только вот ненахожу способ передать строку в драйвер так как, например если через Registry то Rtlxx и Zwxx функциями немогу воспользоваться так это драйвер дисплея, насколько я понял там только функции Engxx работают.
    Может у когонибудь есть какие-нибудь идеи как можно сделать?
     
  2. overfault

    overfault New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2005
    Сообщения:
    22
    взаимодействие драйвера с юзермод-приложением через маппинг это изврат
    тема про то как делать это по нормальному подымалась не раз, используй поиск
    так же сабж подробно описан в DDK

    а проблемы с доступом скорее всего изза UAC (User Account Control) - фишка висты, включена по умолчанию
    при этом даже под учетной записью администратора приложения запускаются с ограниченым токеном

    имхо, тему в wasm.beginners
     
  3. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    Да тут так есть.
    Тут понимаешь проблема в том что в драйвере дисплея нельзя wdm.h и ntddk.h воспользоваться.
    (Возможнотут я неправ)
    Если тут какой-нибудь выход без использования этих юнитов?
    Мне нужно сделать общую память между драйвером и (Ring 3) App.
     
  4. TarasCo

    TarasCo New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2005
    Сообщения:
    106
    А Вы попробуйте при создании файла установить ему нужные права доступа, иначе он наследует их от каталога, который в висте действительно не доступен пользовательским программам из-за ограничения привилегий UAC ом. Второй вариант: пропишите в манифесте программы, что она должна запускаться с административными привилегиями. В этом случае при запуске приложения будет появляться окошко c с предупреждением о эскалации привелегий.
     
  5. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    По поводу первого варианта то там я использую вот такую функцию для маппинга файл
    Код (Text):
    1.   EngMapFile(
    2.     IN LPWSTR  pwsz,
    3.     IN ULONG  cjSize,
    4.     OUT ULONG_PTR  *piFile
    5.     );
    Тут ничего нету.
    А со вторый я пробовал но тоже самое получатся.
     
  6. overfault

    overfault New Member

    Публикаций:
    0
    Регистрация:
    28 сен 2005
    Сообщения:
    22
    а зачем тебе вообще файл? просто именованная секция не пойдет?
     
  7. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    overfault, а что это?
    Можно подробней пожалуйста (именованная секция) ?