:: Visual Foxpro, Foxpro for DOS
Перехват виндового диалога с авторизацией учетной записи
Божья_коровка
Автор

Сообщений: 25731
Дата регистрации: 23.08.2001
Всем доброго дня!

Ситуация такая, нужно с определенной папки которая находится на сервере скопировать файлы на локальный компьютер юзера. Дело в том, что при заходе на сервер выходит виндовый диалог авторизации учётной записи, юзер вводит логин и пароль, учетка авторизируется, всё ок, копирует файлы. Можно ли программно отловить этот диалог и подсунуть ему логин с паролем, чтобы пользователь каждый раз их не вводил и вообще не видел этого диалога? По сути автоматически заполнить эту форму и нажать "ОК"...


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 14.06.17 14:46
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
PaulWist

Сообщений: 14614
Дата регистрации: 01.04.2004
чЁ о ни фига не понял

Давай по слогам изложи что хочешь сделать.

А то у меня получается, что надо войти на сервер для того, что бы с сервера на клиента переписались какие-то файлы, ... и что делать если клиент в этот момент выключен/недоступен.

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


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Божья_коровка
Автор

Сообщений: 25731
Дата регистрации: 23.08.2001
Как мне объяснили.
Есть комп юзера, есть сервер, они в одной сети. На сервере создана некая учетка с определенными правами на определённые папки. Юзер со своего компа идет на сервер (через проводник) ему выдается окошечко которое предлагает ввести логин и пароль учетки (которую создали для этих дел), он их вводит если всё верно ввел попадает на сервер. Копирует файлики и всё.
Большей информацией не обладаю.
задача, автоматом заполнить диалог который выходит юзеру, чтобы тот его не видел..
Вот такое окошечко говорят

[attachment 27823 ]


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 2 раз(а). Последнее : Божья_коровка, 14.06.17 15:10
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
PaulWist

Сообщений: 14614
Дата регистрации: 01.04.2004
А так тут два варианта, либо сервер находится в домене или рабочей группе, а клиент не входит ни в домен, ни в рабочую группу сервера.

Тогда, где-нибудь (в автозагрузке, например) вызвать bat-ник с командой net use для автоматического цепляния к серверу.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/1 positive
Re: Перехват виндового диалога с авторизацией учетной записи
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Сделать на компе юзера батник, мапирующий с указанием учетных данных нужные каталоги сервера в локальные диски компа юзера. Юзеру запускать сей батник перед копированием.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Божья_коровка
Автор

Сообщений: 25731
Дата регистрации: 23.08.2001
Пауль, говорят что сеть без доменов (видимо одноранговая), а этот пароль на учетку выставлен...

PaulWist
Тогда, где-нибудь (в автозагрузке, например) вызвать bat-ник с командой net use для автоматического цепляния к серверу.
Ага, глянула сейчас через cmd команду net use...спасибо!


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 2 раз(а). Последнее : Божья_коровка, 14.06.17 15:47
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
PowerShell
Для понимания о дебрях
;)



Исправлено 1 раз(а). Последнее : Chemberzhy, 14.06.17 15:48
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Божья_коровка
Можно ли программно отловить этот диалог
Нельзя, да и не нужно...
Божья_коровка
чтобы пользователь каждый раз их не вводил и вообще не видел этого диалога
Замапить вручную данный сетевой ресурс.
Для ленивых - утилитой net, для дотошных - АПИ функциями WNetAddConnection2 и WNetCancelConnection2 (чтобы отключить это соединение после использования - и юзер не мог в проводнике лазить по этому ресурсу - особенно если он не знает логина/пароля и не умеет его вынуть из твоей программы).


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Божья_коровка
Автор

Сообщений: 25731
Дата регистрации: 23.08.2001
Пауль, воспользовалась твоим советом с Net use, правда без написания батника. Всё уместила в RUN.
Манагер мой "отгонял" говорит всё ок.

Спасибо тебе большое, всегда выручаешь


To all:


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 15.06.17 15:18
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Божья_коровка
Ситуация такая, нужно с определенной папки которая находится на сервере скопировать файлы на локальный компьютер юзера.

Да можно элементарно через скриптовую машину подключиться и скопировать.
Кажется когда-то я даже приводил тут пример.
Если интересно, могу повторить. Но если все уже решено и как бы не надо, стало быть и не надо.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Божья_коровка
Автор

Сообщений: 25731
Дата регистрации: 23.08.2001
Да, всё решено, сделано и протестировано, в понедельник контрольное тестирование и этап внедрения. Но ты всё равно приведи свой пример, потому что интересно же. Да и вдруг кто то озаботиться такой же проблемой, зайдет, почитает и применит именно твоё решение. ;)


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Божья_коровка
потому что интересно же. Да и вдруг кто то озаботиться такой же проблемой, зайдет, почитает и применит именно твоё решение. ;)

Ну хорошо.
Только, пожалуй, все же пара замечаний по самой работе с файлами через сеть конкретно из Фокспро.
Когда-то делал подобную работу с удаленным компьютером, подключаемым через логин и пароль под виндой (причем вначале даже еще для FPD).
И поэкспериментировав пришел к выводу, что при работе с сетевыми файлами с использованием обычного обращения к ним через "\\" работа в гораздо большей степени притормаживается, нежели при использовании подключеннного рабочего каталога на удаленном компьютере, как сетевого диска под какой-то буквой.
Вероятно это связано с тем, что при этом диск мапируется один раз, и далее фокспро работает с файлами, как с расположенными по конкретным, привычным для фокспро, практически "локальным" путям вида: "X:\Folder1\Folder2\...". В то время, как при работе с файлами по адресам со слэшами "\\" видимо приходится каждый раз выполнять какие-то дополнительные сетевые обращения, из-за чего слегка (а иногда и не слегка, это зависит от сети) все притормаживает.
Кроме того, проверку на наличие буквы диска из-под фокспро всегда легче (а самое главное быстрее) выполнять, нежели проверять сетевой путь, проверка существования которого может занимать время.
Повторю на всякий случай, если у кого-то возникнут возражения, что все это были результаты практических, т.е. вполне реальных экспериментов, а не абстрактные суждения на основе каких-либо теоретических положений. К тому же проводившиеся в условиях не самой идеальной локальной сети, как по скорости, так и по надежности. Вдобавок с удаленными компьютерами "диких пользователей", которые в любой момент могут быть просто так выключены без всяких объяснений. В этом смысле для самой фокс-программы удобство и надежность использования именно мапированных дисков получается таки намного выше. [sm128]

Ну и собственно код:
*** задаем необходимые параметры:
* буква диска, заведомо не используемая для локальных дисков:
cLetterNetDrive = "X:"
* сетевое имя компьютера:
cRemoteComp = "Ladybug"
* подключаемая рабочая папка этого компьютера:
cWorkFolder = "MyProg"
* мия пользователя для сетевого входа:
cUserName = "User"
* пароль для сетевого входа:
cPassword = "password"
*** создаем скриптовый объект работы с сетью:
WshNetwork = CREATEOBJECT("WScript.Network")
*** на всякий случай проверяем, нет ли подключенного диска с такой же буквой,
*** если есть, можно в принципе его и использовать, на надежнее отключить (чтобы подключить затем именно нужный):
RemoveNetDrive()
*** подключаем диск с заданной буквой
WshNetwork.MapNetworkDrive(cLetterNetDrive, "\\"+cRemoteComp+"\"+WorkFolder, "false", cUserName, cPassword)
***
MESSAGEBOX("Диск "+cLetterNetDrive+" подключен!")
*** работаем с файлами сетевого диска
*** отключаем сетевой диск:
RemoveNetDrive()
MESSAGEBOX("Диск "+cLetterNetDrive+" удален!")
***********************
PROCEDURE RemoveNetDrive
colDrives = WSHNetwork.EnumNetworkDrives
IF colDrives.Count>0
FOR i=0 TO colDrives.Count-1 STEP 2
IF colDrives.Item(i)=cLetterNetDrive
WSHNetwork.RemoveNetworkDrive(cLetterNetDrive, "true", "true")
ENDIF
ENDFOR
ENDIF
ENDPROC
***********************

Т.е. довольно удобно получается.
Причем работать с подключенным так через логин-пароль диском можно даже и в FPD. Только в этом случае разумеется само подключение придется делать уже не через объект, а используя внешний скрипт js или vbs. Ну или как было сделано у тебя - через командную строку.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 19.06.17 12:06
Ratings: 0 negative/1 positive
Re: Перехват виндового диалога с авторизацией учетной записи
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Crispy
PROCEDURE RemoveNetDrive
colDrives = WSHNetwork.EnumNetworkDrives
IF colDrives.Count>0
FOR i=0 TO colDrives.Count-1 STEP 2
IF colDrives.Item(i)=cLetterNetDrive
WSHNetwork.RemoveNetworkDrive(cLetterNetDrive, "true", "true")
ENDIF
ENDFOR
ENDIF
ENDPROC
Хмм... А зачем перебирать диски, если диск по букве удаляется?
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
pasha_usue
Хмм... А зачем перебирать диски, если диск по букве удаляется?

А если этой буквы нет? Тогда возникает ошибка.
Данный же способ нашел где-то на скриптовом форуме.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Crispy
pasha_usue
Хмм... А зачем перебирать диски, если диск по букве удаляется?

А если этой буквы нет? Тогда возникает ошибка.
Данный же способ нашел где-то на скриптовом форуме.
А обработать ошибку не получается? Просто на перебор дисков всё-равно какие-то затраты ложатся.
Возможно, исходный скрипт на VBS. Там туго с обработкой ошибок, только локальный ON ERROR есть.



Исправлено 1 раз(а). Последнее : pasha_usue, 20.06.17 09:19
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Кстати, на случай, если пользователю не нужно видеть подключаемый диск, можно просто отключить видимость данного диска стандартным методом добавления в реестр записи запрета показа для конкретного диска и перезагрузки: www.treeone.ru
Добавление такой записи делается всего один раз при первом запуске программы на данном компьютере.
А чтобы автоматизировать это для любого компа, где может запускаться программа, можно при загрузке программы просто вставить проверку, есть ли такая запись в реестре и чему она равна.
С помощью например такого кода:
*** создаем объект для работы с реестром:
oWshShell = CREATEOBJECT("Wscript.Shell")
*** параметр, отключающий видимость в проводнике какого-либо диска:
cPar = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDrives"
*** Список подставляемых чисел для скрытия соответствующих букв дисков:
*** A: 1, B: 2, C: 4, D: 8, E: 16, F: 32, G: 64, H: 128, I: 256, J: 512, K: 1024, L: 2048, M: 4096, N: 8192, O: 16384, P: 32768,
*** Q: 65536, R: 131072, S: 262144, T: 524288, U: 1048576, V: 2097152, W: 4194304, X: 8388608, Y: 16777216, Z: 33554432,
*** Скрытие нескольких - сумма их чисел. Скрыть все диски: 67108863. Показать снова все: 0, либо удалить данный параметр.
*** Т.е. например, для скрытия диска X:
cVal = "8388608"
mcVal = "0"
*** если параметр отсутствует, генерируется ошибка, поэтому используем стандартную конструкцию обхода:
TRY
*** чтение параметра:
mcVal = oWshShell.RegRead(cPar)
*** если параметр имеет другое значение, перезаписываем:
IF mcVal#cVal
RegWritePar()
ENDIF
CATCH
*** запись параметра:
RegWritePar()
ENDTRY
***********************
PROCEDURE RegWritePar
oWshShell.RegWrite(cPar, cVal, "REG_DWORD")
MESSAGEBOX("Для дальнейшей работы компьютер должен быть перезагружен!"+CHR(13)+;
CHR(13)+"Закройте все программы и выполните перезагрузку!",0,"внимание!")
ENDPROC
***********************


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
pasha_usue
Crispy
pasha_usue
Хмм... А зачем перебирать диски, если диск по букве удаляется?

А если этой буквы нет? Тогда возникает ошибка.
Данный же способ нашел где-то на скриптовом форуме.
А обработать ошибку не получается? Просто на перебор дисков всё-равно какие-то затраты ложатся.
Возможно, исходный скрипт на VBS. Там туго с обработкой ошибок, только локальный ON ERROR есть.

Поначалу подобное, как я уже и писал выше, делалось для FPD. Т.е. с использованием скрипта. А вообще в VFP в принципе можно было бы и по-другому сделать. Просто при переделке перенес как бы со скрипта все в фокс. Что же касается каких-то возможных "тормозов" при этом, то в общем-то ни в каких ситуациях ничего такого вроде и близко не наблюдается. Скорость работы скриптов таки достаточно неплоха. Думаю не хуже, чем команд фокспро.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
"Прятание" дисков через политики по настоящему уважает лишь Explorer. Другие файл-менеджеры или плюют на это, или опционально используют (т.е. надо ещё включать специально что-то чтобы "скрывались" диски).
Я могу поверить что поиск/начальное открытие файлов по UNC пути могут отличаться по скорости от поиска/открытия по "примапленному диску" - но основная работа не будет отличаться - при чтении/записи файлов уже нет никаких "путей" - есть хендл открытого файла (для сетевого - работающий через сетевой редиректор) и всё... Разве что включены опции кэширования для сетевых файлов - но они во-первых должны работать и для доступа "без буквы", а во-вторых КРАЙНЕ опасны для работы с dbf или иными "разделяемыми" файлами - т.к. по сути будут приводить к потере изменений вносимых в такие файлы...
А нюансы с медленным "начальным открытием" (или "хождением по папкам" в шаре) - ну обычно это лечится настройками файл-сервера... Да и не сильно критично для работы с парой больших dbf-ов. Миллионы мелких - другое дело...

Кстати, программа молча отключающая некоторый сетевой диск и назначающая вместо него какой-то "свой" - очевидное "вредоносное ПО".


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Igor Korolyov
"Прятание" дисков через политики по настоящему уважает лишь Explorer.

Ну дык естественно. Речь идет не о продвинутых пользователях. Есть кстати еще один параметр реестра, запрещающий уже и чтение пользователю с указанного диска, даже без его скрытия в экплорере. Не думаю, что в большинстве случаев такое бывает нужно. Но можно и так. Что же касается продвинутых пользователей - ну дык в таком разе в принципе можно и без никаких проблем прочитать список всех файлов подключенного даже и без сетевого диска компьютера и делать с ними все, что угодно. Кроме того, подключение только лишь рабочей папки удаленного компьютера как сетевого диска максимум сделает доступной только лишь эту папку. Подключение же целиком компьютера делает доступными все его диски (если не озаботиться на стройками политик на удаленном компе). Что думаю намного опаснее, нежели даже открытие одной рабочей папки. Тонкая же настройка политик - в любом случае намного более геморойна (особенно как у автора на десятках комьпютеров), чем простое подключение одной папки. Поэтому в реальности такие компьютеры остаются "голыми" - хорошо, если не найдется ни одного "продвинутого", чтобы этим воспользоваться.

Igor Korolyov
Кстати, программа молча отключающая некоторый сетевой диск и назначающая вместо него какой-то "свой" - очевидное "вредоносное ПО".

Для блаандинок (и блаандинов), качающих "из инета прогу пасматреть у сибя, чо оно такое" - возможно да.
А для конкретного своего производства - это называется "политика". Тебе ли не знать. ;)


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 22.06.17 06:30
Ratings: 0 negative/0 positive
Re: Перехват виндового диалога с авторизацией учетной записи
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Crispy
Кроме того, подключение только лишь рабочей папки удаленного компьютера как сетевого диска максимум сделает доступной только лишь эту папку. Подключение же целиком компьютера делает доступными все его диски
Ерунда. Никакие "компьютеры" не подключаются. Подключается всегда шара она же share, она же "сетевой ресурс" - и это ни разу не "компьютер целиком" - это всегда только небольшое подмножество - либо папка (которая, конечно, может быть и корневой папкой диска - так делаются "административные" шары C$, D$ и т.д.) либо шара для создания "именованных каналов" и других объектов межпроцессной коммуникации IPC$.
Так что никаких "подключений компьютера целиком" не существует. Просто не нужно использовать административные шары, ну и, соответственно, аккаунт администратора для авторизации в "обычных" шарах. Кстати, не все версии ОС позволяют с одной и той же машины подключится к сетевому ресурсу под НЕСКОЛЬКИМИ разными пользователями.

Crispy
А для конкретного своего производства - это называется "политика".
Если это внутренний софт одного предприятия - то да, бывает и не такой дебилизм... Если же это отчуждаемый софт, то из такого требования в техдокументации адекватный админ/начальник IT сделает верный вывод и пошлёт такого разработчика по всем известному правильному адресу
Программы не умеющие работать с UNC путями, да ещё и автоматом создающие мап-диски благополучно умерли ещё в прошлом веке.


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 16 (Гостей: 16)

© 2000-2024 Fox Club 
Яндекс.Метрика