Как скрыть ненужные диски

Тема в разделе "WASM.HEAP", создана пользователем Stariy, 25 апр 2007.

  1. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Nouzui
    есть много путей:
    а) через реестр
    (но это не универсально, на NT 4.x, W2K и Висте он разный, XP не смотрел);

    б) писать свой драйвер:
    http://www.osronline.com/article.cfm?id=79
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Stariy
    пропишись в автозагрузку гденить в реестре, например, в Run.
    при завершении подлключать смысла нету, после ребута вроде все снова будет как обычно
     
  3. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Возможно, я ошибаюсь, но перезарузка не помогает. По крайней мере, когда я удалил одну букву, то пришлось повозиться, чтоб вернуть ее назад. Хорошо еще, что экспериментировал не с диском С:) Хотя может быть С и не удалилось бы...
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    я не помню точно) может и не помогает... все вернуть обратно просто, надо найти том без точки монтирования через FindFirstVolume/FindNextVolume и потом примонтировать его обратно
     
  5. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    эта мысль мне в голову пришла несколько позже:) а поначалу колупался в реестре.
    кстати. а вот еще вопрос - может ли быть более 26-и дисков в системе? и как они тогда будут обозначаться?
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    более 26 точек монтирования может (если есть NTFS диски), а более 26 дисков - хз. наверное, нет.. точно не знаю по этому поводу=\
     
  7. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    у меня было максимум 19
    я что-то слышал про двухбуквенные обозначения, но имхо это бред..
     
  8. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    > кстати. а вот еще вопрос - может ли быть более 26-и дисков в системе?
    > и как они тогда будут обозначаться?
    NT позволяет давать дискам имена, так что более 26 дисков быть вполне может.
    у меня иногда присуствует до 30 дисков, пускай и виртуальных, но все работает ;)
     
  9. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    kaspersky
    mountvol my_disk: \\?\Volume... ?
     
  10. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Сваял на досуге две проги, одну для скрывания дисков:
    Код (Text):
    1. char      disk[7];
    2.     int err;
    3.     BOOL bFlag;
    4.     char Buf[MAX_PATH];
    5.     FILE *ff;
    6.     ff = fopen("DriveHider.ini","w+");
    7.  
    8.     strcpy(disk,"a:\\");
    9.     bFlag = GetVolumeNameForVolumeMountPointA(disk,Buf,MAX_PATH);
    10.     if (bFlag != TRUE)
    11.     {
    12.         MessageBoxA(0,"GetVolumeNameForVolumeMountPoint error",0,0);
    13.         return 0;
    14.     }
    15.  
    16.     fprintf(ff, "%s %s\n",disk, Buf );
    17.     DeleteVolumeMountPointA(disk);
    18.  
    19.     strcpy(disk,"s:\\");
    20.     bFlag = GetVolumeNameForVolumeMountPointA(disk,Buf,MAX_PATH);
    21.     if (bFlag != TRUE)
    22.     {
    23.         MessageBoxA(0,"GetVolumeNameForVolumeMountPoint error",0,0);
    24.         return 0;
    25.     }
    26.  
    27.     fprintf(ff, "%s %s\n",disk, Buf );
    28.     DeleteVolumeMountPointA(disk);
    29.  
    30.     fclose(ff);
    31.     exit(0);
    Другую для открывания назад:
    Код (Text):
    1. char      disk[7];
    2.     int err;
    3.    
    4.     BOOL bFlag;
    5.     char Buf[MAX_PATH];     // temporary buffer for volume name
    6.  
    7.     FILE *ff;
    8.     ff = fopen("DriveHider.ini","r");
    9.  
    10.     fscanf(ff,"%s %s",disk, Buf);
    11.     bFlag = SetVolumeMountPointA(
    12.         disk, // mount point
    13.         Buf // volume to be mounted
    14.         );
    15.  
    16.     if (!bFlag)
    17.     {
    18.         MessageBoxA(0,"SetVolumeMountPoint",0,0);
    19.         err = GetLastError();
    20.     }
    21.     //////////////////////////////////////
    22.     fscanf(ff,"%s %s",disk, Buf);
    23.     bFlag = SetVolumeMountPointA(
    24.         disk, // mount point
    25.         Buf // volume to be mounted
    26.         );
    27.  
    28.     if (!bFlag)
    29.     {
    30.         MessageBoxA(0,"SetVolumeMountPoint",0,0);
    31.         err = GetLastError();
    32.     }
    33.     fclose(ff);
    Одну поставил на автозаупск жене, вторую себе.
    Все вроде работает как надо, так что тему можно считать закрытой. Спасибо всем откликнувшимся за советы.
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    С одной проблемой разобрались =)
    Подождите тему клосить, интересно же про >26 дисков то )
    так и не было четкого ответа на то, что будет, когда закончатся буквы=\
     
  12. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    попробую сегодня занять каким-нить эмулятором CD максимальное кол-во букв, а потом вставить флешку и посмотреть,какая буква ей назначится и че вообще будет:)
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ща сам протестю)
     
  14. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Код (Text):
    1. <?
    2. mkdir("E:\\substs");
    3. $k=0;
    4. for($i='a';$k<26;$k++,$i++)
    5. {
    6.   echo $i.":....\n";
    7. //  mkdir("E:\\substs\\".$i);
    8.   system("subst ".$i.": E:\\substs\\".$i);
    9. //  system("subst ".$i.": /d");
    10. }
    11. ?>
    [​IMG]
    потом вставил флешку... были глюки забавные) флешке назначился диск K:, как он назначался ей всегда ранее, и оно показало, что у меня флешка на 39 гигов :lol: D
    [​IMG]
    только после того, как сделал subst k: /d, флешка нормально заработала
     
  15. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    вот шайтан... :)
     
  16. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Насоздавал алкоголем кучу виртуальных дисков, чтоб все буквы были заняты. Вставил флэшку - она определилась, но буква ей не назначилась.
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    видно subst слегка по другому работает. точнее, он использует обычный DefineDosDevice.