powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / shared folder с паролем.
6 сообщений из 6, страница 1 из 1
shared folder с паролем.
    #38722860
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Подскажите пожалуйста, как записать файл в существующую shared folder закрытую паролем.

Шара поступает в таком виде: \\comp\shara
Пароль и логин известен.

Я нагуглил, как подключится к шаре через имперсонализацию:

Код: c#
1.
2.
3.
4.
5.
            IntPtr tokenHandle = new IntPtr(0);
            bool returnValue = LogonUser("user", "domain", "pass", 2, 0
                , ref tokenHandle);
            if (!returnValue)
                throw new Exception("Logon failed.");



Но в моем случае - домена у шары нет. При попытке передать пустой домен - в результате получаю returnValue == false.
...
Рейтинг: 0 / 0
shared folder с паролем.
    #38722876
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайНо в моем случае - домена у шары нет. При попытке передатВ качестве домена надо передать, видимо, сетевое имя компа (сам себе домен)
...
Рейтинг: 0 / 0
shared folder с паролем.
    #38722896
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

К сожалению не прокатило.
Пробовал передавать как просто имя, в формате "\\comp", так и с передачей имени компа с папкой "\\comp\shara".
...
Рейтинг: 0 / 0
shared folder с паролем.
    #38722915
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так. Походу проблема с самой шарой...

При подключении через net use - подключается, но при попытке зайти туда, или программно записать файл - вылетает ошибка "Отказано в доступе по пути..."

Т.е. похоже шара создана, но не назначены права. Так, что возможно код рабочий.

Ок. будем разбираться и выяснять с "создателем шары", но уже завтра.
...
Рейтинг: 0 / 0
shared folder с паролем.
    #38723598
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел рабочий код. Проверил, работает.

http://stackoverflow.com/questions/295538/how-to-provide-user-name-and-password-when-connecting-to-a-network-share/1197430#1197430

Но убрал поддержку IDisposeable, т.к. мне шара нужна буквально недели (сервер работает без перерыва сутками) - так зачем отключаться после каждого скопированного файла ?
К тому же заметил баг : шара создается не сразу, а через несколько секунд. Но метод WNetAddConnection2 завершается мгновенно. Что приводило к тому, что если сразу попытаться скопировать файл, то ловили исключение "папка недоступна"... Вкупе с IDisposeable и автоматическим отключением шары это приводило к тому, что при каждом новом копировании файла нужно создавать шару и ждать лишние 2-3 секунды. Да и о многопоточности можно забыть с IDisposeable.
...
Рейтинг: 0 / 0
shared folder с паролем.
    #38723641
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UPD.
Еще замечание. По поводу "шара добавляется через 2-3 секунды". Приходится явно отключать шару (метод WNetCancelConnection2) и пробовать подключить снова через пару секунд.

Если явно не отключить, то шара так и не подключится ! Предупреждаю сразу, пока этого не понял убил полтора часа, считая что код не рабочий.
Делать это нужно лишь 1 раз после перезагрузки компа. Все остальное время (даже если постоянно отключать шару) вроде работает с первого раза.

Делаю так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
            NetworkCredential nc = new NetworkCredential(@"CompName\UserName", "Pass"); // передача "CompName\UserName" позволяет подключится к компу вне домена            
            bool shareFolderIsConnected = false;
            while (!shareFolderIsConnected)
            {
                SimpleNetworkConnection nnc = null;
                try
                {
                    nnc = new SimpleNetworkConnection(@"\\CompName\SharedFolderName", nc);
                    Thread.Sleep(500); // маленькая пауза
                    // Проверяем, что шара подключилась
                    File.WriteAllText(@"\\CompName\SharedFolderName\TestFile.txt", "Сезам, ну откройся. Будь человеком!");
                    shareFolderIsConnected = true;
                }
                catch (Exception)
                {
                    if (nnc != null)
                        // По какой-то причине, обязательно приходится 1-2-3 раза отключить шару, прежде чем все пройдет нормально
                        // простое ожидание таймаута после подключения не помогает...
                        nnc.CloseSharedFolder();                 }

            }



Если кто знает как побороть необходимость явного отключения шары, прежде чем она все таки подключится, отпишитесь. Мне не критично, т.к. только после перезапуска компа проявляется проблема, но интересно.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / shared folder с паролем.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]