Работа с директориями(доступ разрешён/закрыт)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
DiSe
Обычный пользователь
Обычный пользователь
 
Сообщения: 97
Зарегистрирован: 30.06.2003 (Пн) 19:11

Работа с директориями(доступ разрешён/закрыт)

Сообщение DiSe » 09.08.2003 (Сб) 15:12

Мне нужно выполнить следующий алгоритм с помощью VB.
Алгоритм:
Если открывается определённая папка, то запрашивать пароль.
Если пароль совпадё с оригинальным паролем, то открыть эту папку,
иначе - не открывать.
Достаточно простой алгоритм, но я не знаю как его осуществить. Помогите плз!

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

Сообщение RayShade » 11.08.2003 (Пн) 10:00

На VB скорее всего вообще никак :(

DiSe
Обычный пользователь
Обычный пользователь
 
Сообщения: 97
Зарегистрирован: 30.06.2003 (Пн) 19:11

Сообщение DiSe » 11.08.2003 (Пн) 10:23

Нет ничего невозможного. :)

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

Сообщение RayShade » 11.08.2003 (Пн) 10:46

Да, нет ничего невозможного. Вопрос только в целесообразности.

Поставь все на NTFS, развесь пермиссии и будет тебе искомый результат. Все. И не надо огород городить.

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

Сообщение alibek » 11.08.2003 (Пн) 10:48

Будем исходить из того, что информация о том, защищена ли папка, хранится в базе данных. Имеется таблица с полями FULLPATH (Text*250, полный путь к папке, например "C:\My Documents\Porno") и PASSWORD (Text*20, пароль на доступ к папке); поле FULLPATH является ключевым (проиндексированно и уникально). При желании можно переделать и на INI-файлы или вообще использовать свой формат файла.
Теперь создаем проект, добавляем форму, а на форму ложим DirList Dir1.
Теперь пишешь такой код:
Код: Выделить всё
Option Explicit

Private rs As Recordset 'будем использовать ADO
Private PrevPath As String

Private Function CheckRestriction(ByVal Path As String) As Boolean
Dim pwd As String, p As String
'инициализируем rs
...
rs.MoveFirst
rs.Find "[FULLPATH] = '" & Path & "'"
If rs.EOF Then
  CheckRestriction = True
  Exit Function
End If
pwd = rs!PASSWORD
Do
  p = InputBox("Папка защищена паролем! Введите пароль:",vbNullString,"Открытие папки")
  If Len(p) = 0 Then Exit Do
  If p = pwd Then Exit Do
  If p <> pwd Then
    MsgBox "Введен неверный пароль! Повторите!"
    p = vbNullString
  End If
Loop
CheckRestriction = (Len(p)>0)
End Function

Private Sub Dir1_Click()
Dim FP As String
FP = Dir1.Path
If CheckRestriction(FP) Then
  PrevPath = FP
Else
  Dir1.Path = PrevPath
End If
End Sub
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение RayShade » 11.08.2003 (Пн) 10:58

Ну это не решит проблеиу если папка открывается скажем в проводнике или где либо еще :) А автору похоже надо было именно это ;)

Demonx
Бывалый
Бывалый
 
Сообщения: 237
Зарегистрирован: 25.06.2003 (Ср) 0:08
Откуда: Литва/Висагинас

Сообщение Demonx » 11.08.2003 (Пн) 12:00

Ниже брать нужно...Asm всё решит :x

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

Сообщение alibek » 11.08.2003 (Пн) 13:21

RayShade, если ему нужно сделать разграничение на уровне системы, пусть правильно спрашивает :) Он сказал, я предложил. К тому же он спрашивал алгоритм, а не реализацию :)
Lasciate ogni speranza, voi ch'entrate.

DiSe
Обычный пользователь
Обычный пользователь
 
Сообщения: 97
Зарегистрирован: 30.06.2003 (Пн) 19:11

Сообщение DiSe » 11.08.2003 (Пн) 15:07

alibek: Если вы повнимательней просмотрите вопрос, то наверняка заметите, что я спрашиваю реализацию.
To All:
Есть функция API - FindWindow. Наверное она пригодится при решении задачи, но как реализовать?

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 11.08.2003 (Пн) 19:51

Абсолют согласен с модератором ( по поводу огорода). Тут придется столько кода намолоть что жизь немила будет.
----------------------------------------------------------
FindWindow врядли поможет.
----------------------------------------------------------
А вот несколько ножей !!!

1. Объект файловых уведомлений (весьма непросто)
2. Отслеживание привилегий (совсем не просто)
3. Хранение прав доступа (мучительно)

я думаю пока хватит. :!:
Dmitrich


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

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

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

    TopList