WNetAddConnection2 (больной вопрос)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

WNetAddConnection2 (больной вопрос)

Сообщение SergT » 13.04.2006 (Чт) 17:26

Здравствуйте All
Постараюсь описать проблему!
WIN2000
Есть сервер,на сервере папка Folder1 , просмотр которой разрешен пользователю User1. В ней лежит db1.mdb.
Для User2 запрещен просмотр Folder1.
Задача:
Необходимо для User2 временно подключаться к Folder1, чтобы считать инфу из db1.mdb через VB-программу.
Решил действовать через WNetAddConnection2. Временно подключал диск и после считывания инфы сразу же отключал, чтобы User2 не смог воспользоваться доступом позднее. Все было хорошо, но... :shock: :shock:
Если User2 открыл любую доступную папку на сервере - то при запуске программы WNetAddConnection2 выдает ошибку! Не хочет подключать диск, вплоть до завершения сеанса.
Вопрос такой:
Есть ли другой способ считать информацию из db1.mdb?
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.04.2006 (Чт) 17:32

Запретить просмотр папки, но дать доступ на чтение к самому файлу?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 13.04.2006 (Чт) 17:38

GSerg писал(а):Запретить просмотр папки, но дать доступ на чтение к самому файлу?

Да. Вся проблема именно в этом! Правда я не Admin, но если можно так сделать - я бы поговорил с ним.
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

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

Сообщение alibek » 13.04.2006 (Чт) 18:13

Ошибка потому, что не допускается подключение к одному серверу с одной машины под разными учетными записями.
Я бы решил проблему использованием символического/hard-линка на файл в папку, к которой у User2 есть доступ.
Либо просто не давать User2 прав на просмотр папки.
Lasciate ogni speranza, voi ch'entrate.

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 13.04.2006 (Чт) 18:15

Нашел кое что про доступы:
http://www.codenet.ru/webmast/iis/htm/core/iiacnsc.php
Но реально не хотелось бы, чтобы User видел или прикасался самостоятельно к БД, дабы не нанести вреда или умыкнуть..
Возможно ли такое, о Великие?
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

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

Сообщение alibek » 13.04.2006 (Чт) 18:18

Для такого разграничения обычно используют промежуточный сервер (трехзвенный клиент-сервер), оно тебе надо?
Lasciate ogni speranza, voi ch'entrate.

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 14.04.2006 (Пт) 8:35

Что то с форумом было? Не мог войти!

alibek писал(а):Для такого разграничения обычно используют промежуточный сервер (трехзвенный клиент-сервер), оно тебе надо?

Если бы я знал, что мне надо :(
Кстати подключение сетевого диска при загрузке - не мешает работе. Т.е. до того, как пользователь открыл что-нить на сервере - подключаю сетевой диск, а потом все работает! Наоборот - нельзя.
Но при этом (в МойКомпьютер) User видит диск "Z:" ! Может его как-то спрятать? Может это проблема Win2000?
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

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

Сообщение alibek » 14.04.2006 (Пт) 8:38

Тебе нужно, чтобы пользователь имел доступ к данным БД, но не имел доступа к самой БД? Или тебе принципиально важно сделать именно то, что ты написал?
Lasciate ogni speranza, voi ch'entrate.

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 14.04.2006 (Пт) 9:01

Да! Именно так. Только доступ к данным через программу(под другим логином и паролем).Но програмно это решается, как я описывал выше. В сети для некоторых пользователей папка, содержащая БД закрыта для просмотра. Т.е. он ее видит, но при попытке открыть - вылетает msg "у вас нет доступа!". Временным подключением сетевого диска ( на несколько секунд) - проблема снимается. Но диск не подключается, если User уже залез на сервер со своим логином и парролем. Может Винда делает какую-то запись? Так как , в принципе,
схема работает, если диск подключить заранее. Или я все делаю через Ж..?
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 14.04.2006 (Пт) 9:19

alibek писал(а):Ошибка потому, что не допускается подключение к одному серверу с одной машины под разными учетными записями.
Я бы решил проблему использованием символического/hard-линка на файл в папку, к которой у User2 есть доступ.
Либо просто не давать User2 прав на просмотр папки.

Извини alibek, оставил без внимания твой ответ!
Не очень понял по поводу "символического/hard-линка ". Я пытался в доступной для User2 папке положить другую БД с линками на основную. Если я присоединил таблицы в сеансе User1, то таблицы видны, если сеанс User2 - нет!.
Да , забыл добавить, что доступ к той папке определяю не я - это политика начальства и Админа. Раньше папка была свободна для доступа- все работало. А теперь... Ну хоть вешайся - голова пухнет! Я уже и книжку по сетям купил. Нет времени, но видимо, и нет выхода - буду читать.

PS:
Добавлено: 14.04.2006 (Пт) 9:19 Заголовок сообщения:
У меня часы показывают на час больше!! Я побежал по делам...
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 14.04.2006 (Пт) 10:36

Пиши промежуточное звено, это займет минут десять плюс полчаса (максимум) на настройку прав доступа к нему.
Лучший способ понять что-то самому — объяснить это другому.

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

Сообщение alibek » 14.04.2006 (Пт) 12:47

Antonariy писал(а):это займет минут десять

Позволь не согласиться :)
Lasciate ogni speranza, voi ch'entrate.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 14.04.2006 (Пт) 13:24

Создать класс с единственным свойством, возвращающим соединение? Действительно, меньше. :D
Лучший способ понять что-то самому — объяснить это другому.

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

Сообщение alibek » 14.04.2006 (Пт) 19:40

А что ты имел ввиду под промежуточным звеном?
Я имел ввиду промежуточный сервер в трехзвенном клиент-сервере.
Lasciate ogni speranza, voi ch'entrate.

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 17.04.2006 (Пн) 10:46

Antonariy писал(а):Создать класс с единственным свойством, возвращающим соединение? Действительно, меньше. :D


:shock:
Даже не прошу рассказать подробнее! Может предложите почитать чего-нибудь? Что значит "...возвращающим соединение"? Где копать?
Намекните, пожалуйста :cry:
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 17.04.2006 (Пн) 11:32

Выручайте, братцы! Не могу сдвинуться!
Любые идеи, но нужно прочитать файл из закрытой папки! Может использовать права админа?... хотя писали о невозможности работы с одного компа 2-х пользователей. Может еще какие службы есть?

И вот еще кое-что (попробовал):
На самом деле есть еще User3, который тоже имеет доступ к той несчастной папке. Так вот при сеансе User3 сетевой диск подключается без проблем от чужого имени, также имеющего доступ! Получается, что можно подключаться от разных имен одновременно?

И еще один вариант работает:
Если на другом компе,имеющем папку общего доступа, вошли под User1 и в этой папке есть db2.mdb, у которой связанные таблицы с db1.mdb. Такой вариант попробую использовать (временно). Минус - тот комп тоже должен быть включен и доступ к БД свободен. Но не все знают про этот комп.
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 17.04.2006 (Пн) 13:56

А что ты имел ввиду под промежуточным звеном?
Вообще-то я имел ввиду COM+ серверную библиотеку, возвращающую через публичное свойство открытое сединение ADODB.Connection, но вот вспомнил, что полученное таким образом соединение не работоспособно. При попытке выполнить rs.Open "select * ", cn выскакивает ошибка type mismatch. Поэтому все процедуры, выполняющие запросы к базе, нужно переносить в эту библиотеку.
Даже не прошу рассказать подробнее!
Вкратце - создаешь ActiveX dll, в свойствах класса ставишь MTSTransactionMode = NoTransaction, переносишь в нее все процедуры, работающие с базой, клиенту через них возвращяешь рекордсеты. На сервере открываешь Панель управления - Администрирование - Службы компонентов (XP, 2003; в 2000 - Приложения COM+). Выбираешь ветку "Приложения COM+", тынц правой кнопкой мыши - Создать - приложение - Создать новое приложение - имя любое, галочка на "серверное приложение". В дереве находишь ветку своего приложения - Компоненты - перетаскиваешь драгдропом скомпилированную dll. Под поляску с бубнами настраиваешь права. Тынц правой кнопкой в приложение - Экспорт... - вводишь название msi-файла, галочку на прокси, ищешь результат. Копируешь на клиентский комп, устанавливаешь.
Лучший способ понять что-то самому — объяснить это другому.

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 17.04.2006 (Пн) 14:38

Antonariy писал(а): На сервере открываешь Панель управления - Администрирование ...

Это мне к Администратору сети обращаться?

Если я не Админ - реально ли найти другое решение, не обращаясь к Админу? Если Вы знаете, что есть иное решение - просто ответьте "Да, есть" и я сам его найду. Если такого решения не существует - я попробую найти другой подход. Может быть сделаю "выброс" зашифрованного файла в доступную папку с необходимой информацией при работе Оператора Склада. Собственно, мне нужен некий отчет о состоянии склада на момент запроса. При составлении новой накладной - буду "скидывать" файл с отчетом в иную папку. Тоже гимор (проверять, не открыт ли он и т.д). Но тоже решение, а оно мне очень :cry: надо!
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44

    TopList  
cron