Конференция "WinAPI" » Как определить HDD программы из под гостя? [D6, WinXP]
 
  • Anatoly Podgoretsky © (05.06.08 00:30) [20]
    > Игорь Шевченко  (04.06.2008 23:51:18)  [18]

    Понял.
  • Anatoly Podgoretsky © (05.06.08 00:31) [21]
    > AllDontFire  (04.06.2008 23:57:19)  [19]

    Тебе несколько раз намекнули, что буквы может не быть.
  • AllDontFire (05.06.08 00:40) [22]
    Хорошо, тогда сабж для случаев когда буква есть - возможен?
  • Anatoly Podgoretsky © (05.06.08 01:00) [23]
    > AllDontFire  (05.06.2008 0:40:22)  [22]

    Не знаю, есть ли АПИ, но вариант с поиском : тебе подсказали, только на всякий случай надо расширить проверку, что был строго один символ, а то могут быть варианты.
  • LightRipple © (05.06.08 01:14) [24]
    > [22] AllDontFire   (05.06.08 00:40)
    > Хорошо, тогда сабж для случаев когда буква есть - возможен?

    Возможен. Добавлю ка я IMHO, а то ведь до сих пор не могу привести пример изменения кластеров при записи :)
    До Delphi я еще не добралась, так что все нижесказанное - это по памяти. Могу ошибаться.
    Для начала: IOCTL_DISK_GET_DRIVE_LAYOUT - устарела.
    Надо использовать IOCTL_DISK_GET_DRIVE_LAYOUT_EX.
    Второе: если нужен только список "партишенов", то на ней свет клином не сошелся.
    Насчет доступа: я бы пошла "методом научного тыка". (Именно так я поступила, когда у меня была похожая проблемма).
    Надо пробовать различные варианты открытия диска (а их как собак нерезанных :),
    комбинируя их с разными способами получения информации.
    Возможно API не хватит для этого, тогда смотри в сторону Nt - они более "гибкие".
  • AllDontFire (05.06.08 01:46) [25]
    > Anatoly Podgoretsky
    Мне нужно определить, что программа запущена, к примеру, c физического HDD "SAMSUNG SP1614N 12345abc", а лог. диск/раздел типа C,D и т.д. легко определить по application.ExeName, например.

    > LightRipple
    Спасибо, буду пробовать.
  • Игорь Шевченко © (05.06.08 17:12) [26]
    AllDontFire   (05.06.08 01:46) [25]

    Защита ?
  • AllDontFire (05.06.08 23:05) [27]
    > Игорь Шевченко
    Да
  • Игорь Шевченко © (05.06.08 23:48) [28]
    AllDontFire   (05.06.08 23:05) [27]

    Сделай сервис, который работает не из-под гостя, и нехай он с винтами разруливает. Его из-под гостя и прибить сложнее. А программа нехай к сервису общается под гостем это вполне допустимо
  • AllDontFire (06.06.08 14:24) [29]
    Проект, в принципе, на это не рассчитан, например, кто-то в компьютерном клубе будет сидеть.
  • Игорь Шевченко © (06.06.08 15:14) [30]

    > Проект, в принципе, на это не рассчитан, например, кто-то
    > в компьютерном клубе будет сидеть.


    принес с собой и запустил ? :)
  • AllDontFire (06.06.08 15:34) [31]
    В инете скачал и запустил :-)
  • Игорь Шевченко © (06.06.08 16:40) [32]

    > В инете скачал и запустил :-)


    Мне крайне интересно, как будет выглядеть защита в этом случае. То есть, запускать он сможет только в этом компьютерном клубе, только на этом компьютере и т.д. ?
    Тебе не кажется это слегка странным ?
  • AllDontFire (06.06.08 20:29) [33]
    Согласен, с комп. клубом надо что-то другое придумать, но ограниченные юзера есть и на постоянных компах.
  • Игорь Шевченко © (06.06.08 20:38) [34]

    > но ограниченные юзера есть и на постоянных компах.


    вот и делай для них сервис. У сервиса прав много, ему гораздо проще получить уникальные данные оборудования.

    В противном случае твой вопрос может выглядеть так: Как под ограниченными правами получить доступ к тому, в чем ограничили ?
    В системе вообще-то разграничение уровня прав существует не просто так, а именно для того, чтобы ограничивать.
    Я не знаю, возможно ли получить доступ к диску так, чтобы прочитать его серийник именно из под гостя, пробовать лень, но если система чего-то не дает, значит это не просто так и обходить это ограничение чревато тем, что в будущих версиях системы эти дырки попросту прикроют.
  • AllDontFire (06.06.08 22:19) [35]
    Ок, сервис тоже идея хорошая.

    А под гостём модели HDD можно прочесть через
    CreateFile(Pchar('\\.\Scsi'+inttostr(id)+':'),...)

    , и вряд ли это "дырка", т.к. в диспетчере устройств они тоже под гостём видны. А вот уже найти   соотвествие лог-им разделам через "scsi" я не знаю как.
  • Игорь Шевченко © (06.06.08 23:50) [36]
    Вот написано же:

    "You can use the CreateFile function to open a physical disk drive or a volume. The function returns a handle that can be used with the DeviceIoControl function. This enables you to access the disk's partition table. It is potentially dangerous to do so, since an incorrect write to a disk could make its contents inaccessible. The following requirements must be met for such a call to succeed:

    The caller must have administrative privileges"
  • AllDontFire (07.06.08 23:53) [37]
    Так до бесконечности можно спорить :-)
    Ничего страшного не вижу в чтении Exteneded Attributes устройств из под гостя. К примеру, гость видит в закладке "Безопасность" файла у кого какие права есть на этот файл, по аналогии можно расценить как "ЕА" файла.
    А вообще, соглашусь, для CreateFile/DeviceIoControl лучше иметь законные права.
 
Конференция "WinAPI" » Как определить HDD программы из под гостя? [D6, WinXP]
Есть новые Нет новых   [134433   +22][b:0][p:0.001]