Как проверить СД-диск на доступность?

Тема в разделе "WASM.WIN32", создана пользователем Magnum, 16 янв 2012.

  1. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    Нужно самым простым образом с правами гостя проверить, есть ли в приводе диск и доступен ли он на чтение.
    Как это сделать?
    Я пытаюсь сделать FindFirstFile(drive:\*.*) + FindClose и если что-то найдено, значит доступно. Можно ли как-то проще в одну апишку?
     
  2. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Magnum
    Вот, Грузин автор, тут тоже кто-то с таким ником заходит, может он, спросить можно.
     
  3. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Код (Text):
    1. .DATA
    2. CD_ROM_PATH DB "E:",0
    3.  
    4. ...
    5.  
    6. invoke GetDiskFreeSpace, OFFSET CD_ROM_PATH, ADDR i1, ADDR i2, ADDR i3, ADDR i4
    7. .if EAX
    8.   ; диск есть
    9. .else
    10. ; диска нет
    11. .endif
    в начале программы надо сделать
    Код (Text):
    1. invoke SetErrorMode, SEM_FAILCRITICALERRORS
    чтобы не вылетало окно о недоступности диска.
     
  4. Magnum

    Magnum New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    925
    _sheva740, K10
    Спасибо! Буду пробовать.
     
  5. samuraishowdown

    samuraishowdown New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2011
    Сообщения:
    70
    После проверки доступности диска, как написал K10, как я понял нужно проверить ещё и доступность диска на чтение для текущей учётки без всплытия UAC. А это намного веселее. Вот готовое решение http://blog.aaronballman.com/2011/08/how-to-check-access-rights/.