Połączenie z drugim komputerem poprzez smb

0

Witam. Musze napisać oprogramowanie (visual c++) które będzie korzystać z plików znajdujących się na innym komputerze lokalnym, korzystając z protokołu smb. Jak wiadomo ścieżka w takim wypadku wygląda następująco \serwer\udzial\plik ...

Wszystko działa poprawnie jeśli zaloguje się wcześniej poprzez "Moje miejsca sieciowe->Wyświetl komputery grupy roboczej->Serwer". I tu wyskakuje okienko do logowania podaje login hasło, loguje się, sesja jest zapamiętywana do czasu ponownego wyłączanie mojego komputera... Czyli dopóki nie wyłączę komputera wszystko gra... Mogę korzystać w moim oprogramowanie z ścieżki w postaci podanej powyżej...

Schody zaczynają się jeśli nie utworze wcześniej sesji. Oczywiście użytkownik programu może nie pamiętać by wcześniej się zalogować na serwer. Dlatego chciałbym by podczas korzystania z oprogramowanie, jeśli nie jest on zalogowany, automatycznie wyskakiwało takie okienko.

I tu moje pytanie. Jak wywołać w tworzonym oprogramowaniu okno do logowania (takie jak przez "Moje miejsca sieciowe") przed wykorzystaniem pliku znajdującego się na serwerze. W jaki sposób sprawdzać czy sesja jest już utworzona? Ścieżkę do pliku znam, wiec wiem jaki to ma być serwer, jaki udział...

Mam nadzieje ze wytłumaczyłem w jasny sposób o co mi chodzi. Czekam na jakieś odpowiedzi, wskazówki.

0

O ile dobrze pamiętam, możesz użyć polecenia net use w celu autentykacji użytkownika

net use \sciezka_do_share-a /user:NazwaUzytkownika Haslo

W swojej aplikacji tworzysz okienko z formularzem do którego użytkownika wprowadza odpowiednie dane.

Potem np. przy pomocy ShellExecute uruchamiasz consolkę CMD z parametrem net use .... - działanie konsoli może być ukryte

Pozdrawiam.

0

To jest rozwiązanie które pewnie zadziała, ale jest dość głupie - na takie samej zasadzie można by wywołać przez ShellExecute \serwer\udzial\plik i wyskoczy systemowe okienko logowania.

Prawidłowo powinno się to robić za pomocą funkcji NetUseAdd: http://msdn.microsoft.com/en-us/library/aa370645%28v=vs.85%29.aspx - jako argument podajesz strukturę ze wszystkimi potrzebnymi danymi autoryzacji.

Albo to: http://msdn.microsoft.com/en-us/library/aa385418%28v=vs.85%29.aspx - z flagą interactive potrafi nawet wywołać systemowe okienko logowania do zasobu sieciowego. Poczytaj sobie o zarządzaniu siecią na msdn - wszystko, co chcesz zrealizować tam jest.

1 użytkowników online, w tym zalogowanych: 0, gości: 1