Создание файла на ближайшем доступном диске.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Гость
 

Создание файла на ближайшем доступном диске.

Сообщение Гость » 26.04.2004 (Пн) 8:42

Прошу помоч мне с такой штукой:
Нужно найти ближайший жёсткий диск, имеющийся в системе, на который можно производить запись и создать на нём файл.

Только не надо мне про то, что на диске Цэ надо делать, он всегда открыт для пользователя. Нифига подобного, бывают системы, где с Цэ только можно считать, а без прав администратора фиг чо сделаеш, но при этом есть серверный диск для каждого пользователя для его данных, вот его букву и надо найти.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 26.04.2004 (Пн) 9:05

В модуле:
Код: Выделить всё

Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Public Function DriveType(Drive As String) As String
   Dim i As Long
   
   i = GetDriveType(Drive)
   
   Select Case i
      Case Is = 2
         DriveType = "FLOPPY"
      Case Is = 3
         DriveType = "HDD"
      Case Is = 5
         DriveType = "CD"
      Case Is = 4
         DriveType = "NETDISK"
      Case Is = 1
         DriveType = "NO"
   End Select
End Function
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.04.2004 (Пн) 10:34

Независимо от того, насколько злобные администраторы настроили систему, ОС не может работать без временных файлов. А для этих временных файлов обычно имеется специальная папка, куда может записывать любой. API GetTempPath поможет тебе найти эту папку, а API GetTempFileName вдобавок еще и предложит свободное имя.
Lasciate ogni speranza, voi ch'entrate.

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 26.04.2004 (Пн) 10:42

Действительно, почему бы тебе не использовать твой профайл.
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Гость
 

Сообщение Гость » 26.04.2004 (Пн) 14:17

kif
Спасибо за код конечно, но функция, к сожалению, не везвращает "Можно ли на диск производить запись", но всё равно спасибо, пример пригодится. (Может я не прав?)

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

Насчёт использования профайла непонял.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.04.2004 (Пн) 14:41

Функции ПолучитьПервыйДрайвНаКоторыйМожноПроводитьЗапись в API нет. И я впервый раз слышу о системе, в которой подльзовательская учетная запись не может создавать временные файлы; такое возможно только на бесдисковых рабочих станциях. Возможно ты имеешь ввиду TEMP для системы, а не для юзера, они могут и различаться.
Lasciate ogni speranza, voi ch'entrate.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 26.04.2004 (Пн) 15:52

58i писал(а):kif
Спасибо за код конечно, но функция, к сожалению, не везвращает "Можно ли на диск производить запись", но всё равно спасибо, пример пригодится. (Может я не прав?)
Насчёт использования профайла непонял.


Эхх Федя, Федя :wink:
Код: Выделить всё
On Error Goto Err
'тут пытаешься записать на диск

Exit Sub
Err:
select case Err.Number
Case 70:msgbox "Permission denied"
...
End Select
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 26.04.2004 (Пн) 16:07

Для возврата папки, куда кладутся временные файлы я пользуюсь
Код: Выделить всё
environ("TEMP")

или
Код: Выделить всё
environ("TMP")


Если охота найти профайл, то на NT+ есть
Код: Выделить всё
environ("userprofile")


Во все эти три папки юзер имеет право записи, так как они обычно располагаются ниже
Код: Выделить всё
environ("homepath")


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot, Yandex-бот и гости: 7

    TopList