Путь к program files

Тема в разделе "WASM.NT.KERNEL", создана пользователем katrus, 10 дек 2008.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Может кто подскажет - допустим program files лежит на диске С:. С "точки зрения" ядра это соответствует \Device\HarddiskVolume1\Program Files. A как в общем случае получить путь к Program Files в драйвере? Ведь система может быть установленна, скажем, на диске D:, или папка Program Files может иметь другое имя. Точно такая же проблема с "Documents and Settings"
     
  2. AntiFreeze

    AntiFreeze Дмитрий

    Публикаций:
    0
    Регистрация:
    26 июн 2008
    Сообщения:
    65
    Да, а ещё может быть так, что Program Files присутствует не только на диске С: или D:, а скажем на всех логических дисках. Разные программы установлены в разных Program Files на разных дисках. В чём собственно заключается задача?

    Documents and Settings можно вытянуть из реестра, например из ключей HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

    или HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList, ProfilesDirectory
     
  3. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    На самом деле более точно, проблема следующая: есть путь в dos формате (например c:\hello\world.txt), как преобразовать его в "драйверный" формат типа \Device\HarddiskVolume1\hello\world.txt. В принципе обратная операция тоже интересна: как из "драйверного" формата преобразовать в dos?

    P.S. Нарыл RtlDosPathNameToNtPathName, но это не совсем то, что нужно. Она преобразует из dos в что то типа: \??\С:\hello\world.txt
     
  4. AntiFreeze

    AntiFreeze Дмитрий

    Публикаций:
    0
    Регистрация:
    26 июн 2008
    Сообщения:
    65
    katrus, много раз тут обсуждалось. Поиск рулит.

    ЗЫ: А чем \??\С:\hello\world.txt не нравится?
     
  5. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Когда достаешь имя файла из его handle - оно в формате \Device\HarddiskVolume...
     
  6. AntiFreeze

    AntiFreeze Дмитрий

    Публикаций:
    0
    Регистрация:
    26 июн 2008
    Сообщения:
    65
    Для ХР и выше

    NTSTATUS IoQueryFileDosDeviceName(IN PFILE_OBJECT FileObject,
    OUT POBJECT_NAME_INFORMATION *ObjectNameInformation);