![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| vainaregard |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 26.2.2010 Где: Россия Репутация: нет Всего: нет |
Здравствуйте, необходимо сделать авто обновлялку для файлов с сервера.
Какой тут можно посоветовать алгоритм или где подводные камни? Есть сервер (доступ к нему идет по NetBios по адресу вида \\server\folder\ через windows все расшарено, но может потребоваться ввод имени и пароля). Updater должен стучаться по этому адресу и копировать всю папку на локальную машину по адресу c:\program files\folder. Предварительно проверить, если запущен процесс process.exe, тогда замена исполняемого файла не произойдет. В принципе вариант организации ftp-сервера тоже имеет место(ресурзы ОЗУ ограничены), а клиентом будет хитрый скрипт |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
никто из присутствующих не против чтобы ты это делал. Делай.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| vainaregard |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 26.2.2010 Где: Россия Репутация: нет Всего: нет |
Тогда например столкнулся со следующим:
объект типа DirectoryInfo не схватит папку, если она расшарена с паролем. пример \\server\folder доступно Гостю (т.е. заходит без пароля) а \\server\secret_folder запрещен доступ руками из windows Гостю (т.е. надо руками вводить пароль) Вопрос: как мне программно заходить на шары windows, защищенные паролем? Как программно вводить пароль(и подцеплять DirectoryInfo)? |
|||
|
||||
| mihryak |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
1. использовать WMI, в конструкторе можно указать имя пользователя и пароль. инетерсовать должен класс Win32_LogicalDisk (точнее не скажу, никогда не общался с файлами через wmi, но это точно возможно) 2. использовать явную имперсонализацию, т.е. на время доступа к запароленной папке "стать" тем самым юзером вот такой класс написал для удобства:
используется так:
Это сообщение отредактировал(а) mihryak - 11.8.2010, 14:12 |
||||||
|
|||||||
| Springtime |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 25.10.2006 Где: Россия, Тюмень Репутация: нет Всего: 2 |
Ещё лучше если ты напишешь веб-сервис который будет тебе выдавать файлы по запросу
+ к нему можно много чего ещё прикрутить да и к тому же Microsoft скорее всего скоро прикроет шары лет так через 5 ))) --------------------
ICQ: 1fe410f46e7f48f6c721bc866d8294a2 |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
чем это поможет, если он будет крутиться не под тем юзером, которому даны права? там тоже придётся делать имперсонализацию забыл ещё третий способ - использовать WinAPI см. WNetAddConnection2, там тоже можно указать юзера с паролем |
|||
|
||||
| Springtime |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 25.10.2006 Где: Россия, Тюмень Репутация: нет Всего: 2 |
Причём тут юзер вообще? Вот у тебя сервак, на нём веб-сервис, который работает так - к нему шлётся запрос от клиента - update() он присылает ответ - типа: граждане! последние файлы расположенные в папочке или в база, версии - 1.7 клиент смотрит - ага у меня эти файлы версии 1.6 (смотрит исходя из версии файлов, или что написано в реестре) посылает серваку очередной запрос - download() сервак отдаёт файлы в виде XML какого ни будь сжатого массива клиент их складывает в какой ни будь промежуточных формат т.к. если запущен process.exe то замены не произойдёт, снова ждём или спрашиваем пользователя если всё оки, то удаляем стырые файлы и переименовываем новые всё делов как яйца почесать! --------------------
ICQ: 1fe410f46e7f48f6c721bc866d8294a2 |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
всё охрененно, казалось бы - сиди и чеши, что чешется, да сигаретки покуривай но! как веб-сервис получит файлы в папке, если шара под паролем? я не говорю, что веб-сервис - плохое решение, но ты совершенно не ответил на посталенный вопрос о доступе к запароленной папке, этот вопрос веб-сервис не решает а так - да, можно и чесать |
|||
|
||||
| Springtime |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 25.10.2006 Где: Россия, Тюмень Репутация: нет Всего: 2 |
Веб сервис у тебя работает от совершенно другой учётной записи, хоть от SYSTEM которая имею доступ в любую дырку --------------------
ICQ: 1fe410f46e7f48f6c721bc866d8294a2 |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
||||
|
||||
| Springtime |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 25.10.2006 Где: Россия, Тюмень Репутация: нет Всего: 2 |
Во первых SYSTEM - это ещё не домен админ и даже не админ схемы AD Во вторых для этих нужд выделяется специальная учётка, которая настраивается с соответствующими требованиями В третьих имперсионизация будет работать, но в классе который будет её выполнять следует указать логин и пароль пользователя от которого будет стучаться прога на эту шару. Логин и пароль тебе придётся записывать куда ни будь вручную или хитрожопо вытаскивать его из AD. Что далеко не айс. Класс для имприсиониазции могу подкинуть попозже, т.к. он у меня дома. Я им сам руки повыдёргиваю!!! Это сообщение отредактировал(а) Springtime - 11.8.2010, 15:08 --------------------
ICQ: 1fe410f46e7f48f6c721bc866d8294a2 |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
это так, да но SYSTEM - это системная учётная запись конкретного компа, на котором будет крутиться сервис, на другом компе у неё прав может и не хватить с новой учёткой вариант хорош, но тогда её придётся прописать во все шары, на которые нужно будет залезать, не уверен, что это будет допустимо, это мало отличается от варианта с прописыванием юзера, под которым сейчас предполагается запускать обновлялку (если бы это было можно сделать, и вопроса бы не возникло) если не пользоваться выделенной учёткой (см. выше), хранить пароли где-нибудь придётся, да, или, как минимум, заставлять вводить при старте, в таком случае, правда автообновлялка уже не будет такой уж авто |
|||
|
||||
| Springtime |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 221 Регистрация: 25.10.2006 Где: Россия, Тюмень Репутация: нет Всего: 2 |
Групповые политики (ГП) тебе в помощь.
Тебе всё равно придётся заморачиваться с имперсионизацией от какой либо одной учётки. Почему у тебя папка от куда будет обновляться программа раскинута по нескольким компьютерам? Чем всё таки плох метод с веб-сервисом? Его также можно настроить чтобы он брал файлы из нескольких мест, зато у тебя точка обновления для программ одна! Автономная, интеллектуальная ))) Или ты просто не знаешь как его делать? Сделать его не так сложно как кажется ))) --------------------
ICQ: 1fe410f46e7f48f6c721bc866d8294a2 |
||||
|
|||||
| mihryak |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 10 Всего: 36 |
какой занудный флуд, да простят нас посетители форума
уже комментировал
так а я о чём с самого начала говорю? будь это простой ехешник, веб- или вин-сервис, батник или таджик за компом - вопросы имперсонализации всё равно придётся решать, а тот факт, что мы напишем именно веб-серсис, вопроса топик-стартера ну никак не решит
об этом ни слова не сказано, она может быть и на отлючаемом ноуте, да и вообще не факт, что на этом компе можно будет устанавливать какие-либо сервисы см. выше. ничего против не имею, но на вопрос он не отвечает
и ехешника, и вин-сервиса, и батника, и таджика тоже хватит одного наш диалог:
Это сообщение отредактировал(а) mihryak - 12.8.2010, 08:54 |
||||||||||
|
|||||||||||
| vainaregard |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 26.2.2010 Где: Россия Репутация: нет Всего: нет |
Всем спасибо, особенно mihryak! Вы все правильно говорите и советуете с имперсонализацией.
Но пока отказались вообще от авто-обновлялки, буду "таджиком" Если мутить пользователя специального, там и GP изучать и AD. На коленках мне пока такое не напечатать. Код mihryak точно пригодится. Отдельное спасибо за совет в виде web-servica(WCF если расширенно взглянуть) Думаю, когда руки дойдут, напишу ТЗ со схемами и алгоритмы работы про эту обновлялку. Уже можно и про linux задуматься, как у них там? PS, уж и не надеялся получить такой развернутый ответ, ан нет форум и люди доказали "хорошесь мира" -) может у кого есть образцы внутренних документов (постановки задач, алгоритмы работы ПО) и есть ли стандарты на эту тему? госты про ТЗ не предлагать |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |