Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem - pristup direktorijumu drugog racunara u mrezi

[es] :: .NET :: Problem - pristup direktorijumu drugog racunara u mrezi

Strane: 1 2

[ Pregleda: 7951 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mikelins

Član broj: 100604
Poruke: 15
*.rtv.co.yu.



Profil

icon Problem - pristup direktorijumu drugog racunara u mrezi08.08.2007. u 12:53 - pre 202 meseci
Moja c# webaplikacija cita sadrzaj direktorijuma drugog racunara u mrezi. Direktorijum je share-ovan tako da svi user-i mogu da mu pristupe. Ukoliko iz koda pokusam da procitam sadrzaj direktorijuma pukne mi jer trazi username i password. Ako pristupim tom direktorijumu "rucno" preko windows explorer-a ponovo mi zatrazi username i password i ako check-iram remember password moj program ce raditi bez problema jer windows zapamti username i password. Kako da resim ovaj problem iz koda da sa bilo kog racunara sve radi kako treba bez rucnog unosa username-a i password-a?
Hvala
 
Odgovor na temu

Boško

Član broj: 32679
Poruke: 62
80.93.249.*



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi08.08.2007. u 17:09 - pre 202 meseci
Probaj ovako

Code:


  Private Const NO_ERROR = 0
  Private Const CONNECT_UPDATE_PROFILE = &H1
  ' The following includes all the Private Constants defined for NETRESOURCE,
  ' not just the ones used in this example.
  Private Const RESOURCETYPE_DISK = &H1
  Private Const RESOURCETYPE_PRINT = &H2
  Private Const RESOURCETYPE_ANY = &H0
  Private Const RESOURCE_CONNECTED = &H1
  Private Const RESOURCE_REMEMBERED = &H3
  Private Const RESOURCE_GLOBALNET = &H2
  Private Const RESOURCEDISPLAYTYPE_DOMAIN = &H1
  Private Const RESOURCEDISPLAYTYPE_GENERIC = &H0
  Private Const RESOURCEDISPLAYTYPE_SERVER = &H2
  Private Const RESOURCEDISPLAYTYPE_SHARE = &H3
  Private Const RESOURCEUSAGE_CONNECTABLE = &H1
  Private Const RESOURCEUSAGE_CONTAINER = &H2
  ' Error Private Constants:
  Private Const ERROR_NO_NET_OR_BAD_SERVER As Integer = 53
  Private Const ERROR_BAD_USER_OR_PASSWORD As Integer = 1326
  Private Const ERROR_ACCESS_DENIED As Integer = 5
  Private Const ERROR_ALREADY_ASSIGNED As Integer = 85
  Private Const ERROR_BAD_DEV_TYPE As Integer = 66
  Private Const ERROR_BAD_DEVICE As Integer = 1200
  Private Const ERROR_BAD_NET_NAME As Integer = 67
  Private Const ERROR_BAD_PROFILE As Integer = 1206
  Private Const ERROR_BAD_PROVIDER As Integer = 1204
  Private Const ERROR_BUSY As Integer = 170
  Private Const ERROR_CANCELLED As Integer = 1223
  Private Const ERROR_CANNOT_OPEN_PROFILE As Integer = 1205
  Private Const ERROR_DEVICE_ALREADY_REMEMBERED As Integer = 1202
  Private Const ERROR_EXTENDED_ERROR As Integer = 1208
  Private Const ERROR_INVALID_PASSWORD As Integer = 86
  Private Const ERROR_NO_NET_OR_BAD_PATH As Integer = 1203
  Private Const ERROR_INVALID_ADDRESS As Integer = 487
  Private Const ERROR_NETWORK_BUSY As Integer = 54
  Private Const ERROR_UNEXP_NET_ERR As Integer = 59
  Private Const ERROR_INVALID_PARAMETER As Integer = 87

  <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _
  Public Structure NETRESOURCE
    Public dwScope As Integer
    Public dwType As Integer
    Public dwDisplayType As Integer
    Public dwUsage As Integer
    Public lpLocalName As String
    Public lpRemoteName As String
    Public lpComment As String
    Public lpProvider As String
  End Structure

  Declare Auto Function WNetUseConnection Lib "mpr.dll" _
          (ByVal hwndOwner As Integer, _
           ByRef lpNetResource As NETRESOURCE, _
           ByVal lpPassword As String, _
           ByVal lpUserID As String, _
           ByVal dwFlags As Integer, _
           ByVal lpAccessName As String, _
           ByRef lpBufferSize As Integer, _
           ByRef lpResult As Integer) As Integer
 
 Private Function KonektujSeNaPC(ByVal NazivPC As String, ByVal un As String, ByVal pwd As String) As Boolean
    Dim nRes As NETRESOURCE
    Dim r As Integer
    Dim Result As Integer
    Dim buffer As String
    Dim bufferlen As Integer

    If un = "" Then un = Nothing
    If pwd = "" Then pwd = Nothing

    buffer = Space(64) : bufferlen = Len(buffer)
    With nRes
      .dwType = RESOURCETYPE_DISK
      .lpRemoteName = "\\" & NazivPC
      .lpLocalName = Nothing
      .lpProvider = ""
    End With

    r = WNetUseConnection(0, nRes, pwd, un, 0, buffer, bufferlen, Result)

    Dim ErrTekst As String
    Select Case r
      Case 53, 1203
        ErrTekst = "PC nije uključen ili pogrešan naziv PC-ja!"
      Case 54, 170
        ErrTekst = "Mreža je zauzeta!"
      Case 1326, 86
        ErrTekst = "Pogrešno korisničko ime ili lozinka za pristup PC-ju!"
      Case 5
        ErrTekst = "Pristup PC-ju zabranjen!"
      'Case ...

      Case Else
        ErrTekst = "Nepoznata greška!"
    End Select

    If r <> NO_ERROR Then
      Throw New Exception("GREŠKA " & CStr(r) & "! " & ErrTekst)
      Return False
    End If
    Return True
  End Function



Nadam se da ti neće biti problem prepisati na C#.
 
Odgovor na temu

mikelins

Član broj: 100604
Poruke: 15
*.rtv.co.yu.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi09.08.2007. u 08:27 - pre 202 meseci
nisam uspeo :(
 
Odgovor na temu

Boško

Član broj: 32679
Poruke: 62
80.93.249.*



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi09.08.2007. u 14:16 - pre 202 meseci
Objasni malo bliže zašto nisi uspeo. Kako si koristio f-ju, da li f-ja vraća True ili False, možda neku grešku...
 
Odgovor na temu

mikelins

Član broj: 100604
Poruke: 15
*.rtv.co.yu.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi09.08.2007. u 14:25 - pre 202 meseci
Vraca mi FALSE jer je r = 487

Sta znaci ova linija u VB ?
buffer = Space(64) : bufferlen = Len(buffer)

kako da je napisem u c#?
 
Odgovor na temu

Boško

Član broj: 32679
Poruke: 62
*.ptt.yu.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi09.08.2007. u 15:17 - pre 202 meseci
Greška koju ti vraća je "ERROR_INVALID_ADDRESS".
Verovatno u C#-u moraš da navedeš ".lpRemoteName = "\\\\" & NazivPC" (četiri backslash-a) umesto dva kako se piše u VB-u.

buffer = Space(64) : bufferlen = Len(buffer)

su u stvari dve linije koda:

buffer = Space(64)
bufferlen = Len(buffer)

buffer se puni sa 64 praznih karaktera (Space-ova), da bi u njega primio neke podatke od f-je WNetUseConnection koji u ovom slučaju nisu od značaja. bufferlen je "dužina" buffer-a i mora se predati ovoj f-ji jer ona tako zahteva.

 
Odgovor na temu

mikelins

Član broj: 100604
Poruke: 15
*.rtv.co.yu.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi13.08.2007. u 11:23 - pre 202 meseci
i dalje imam istu gresku :(
 
Odgovor na temu

Boško

Član broj: 32679
Poruke: 62
80.93.249.*



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi13.08.2007. u 14:24 - pre 202 meseci
Siguran sam da je u pitanju neka sitnica. Neki previd prilikom prevođenja na C#.
Pogledaj ovaj kod: http://lookfwd.doitforme.gr/bl...ia/PinvokeWindowsNetworking.cs
S obzirom da je u C#, lakše ćeš se snaći.
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.33.eunet.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi13.08.2007. u 21:02 - pre 202 meseci
Ja sad moram da postavim jedan offtopic, glupo mi da otvaram novu temu za tako bzw pitanje.

Potrebno mi je da vidim veličinu nekog objekta. Recimo imam neku svoju klasu i potrebno mi je da vidim koliko ona bajtova zauzima ali ne znam kako... Dakle ono što u C++u radi sizeof.
 
Odgovor na temu

mikelins

Član broj: 100604
Poruke: 15
*.rtv.co.yu.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi14.08.2007. u 09:06 - pre 202 meseci
Kod radi ali u sledecem redu kada pokusam da uradim sledece

DirectoryInfo di = new DirectoryInfo(putanja);
FileInfo[] rgFiles = di.GetFiles("*.mp3");

ponovo mi trazi ussername i password
 
Odgovor na temu

Boško

Član broj: 32679
Poruke: 62
80.93.249.*



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi14.08.2007. u 15:13 - pre 202 meseci
Nešto slično sam i ja radio nakon konekcije i to funkcioniše.
E sad šta je u pitanju kod tebe?
Možda način kako su share-ovani diskovi (ili folderi)? U mom slučaju share-ovan je ceo disk, bez ikakvog password-a. Znači UN i PWD su potrebni samo za konekciju na PC.
Kako ti izgleda string "putanja"? Za konekciju bi trebalo da bude npr: "\\PC1", a za pristup folderu "\\PC1\c\Neki_folder".
Da se nisi slučajno diskonektovao odmah nakon konekcije?
Ne pada mi na pamet šta bih još moglo da bude. Kod je OK, ostalo ceš morati da "napipaš".
Inače, ja se konektujem sa WinXP na PC na kome radi Win2000, mada to nema nikakve veze, ali ko bi ga znao.
 
Odgovor na temu

mikelins

Član broj: 100604
Poruke: 15
*.rtv.co.yu.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi15.08.2007. u 13:51 - pre 202 meseci

Uspe da se konektuje i metod connectToRemote vrati prazan string, kada u sledecem redu pokusam da pristupim dir ne moze da se konektuje i trazi mi username i password. Pokusam da uradim sledece

DirectoryInfo di = new DirectoryInfo(putanja);
FileInfo[] rgFiles = di.GetFiles("*.mp3");

Putanja je dobra i sve ovo lepo radi na mom racunaru, ali kada pokrenem webaplikaciju iz mreze javi se greska sa ussername-om i password-om. Konektujem se sa XP na Win2003 Advanced Server
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.adsl.static.sezampro.yu.

Sajt: www.mika.rs


+6 Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi15.08.2007. u 15:08 - pre 202 meseci
Kljucna stvar Web aplikacija ! Meni se cini kao double-hop problem, ali prvo nekoliko pitanja:
1. da li koristite u mrezi active directory,
2. pod kojim nalogom se izvrsava aplikacija i koja je autentikacija korisnika (pretpostavljam NTLM),
3. kako je share-ovan taj folder, odnosno ko ima prava pristupa (grupa, korisnik) i zasto tebi trazi username i password ako pokusas pristup preko windows explorera, ako kazes da da svi imaju pravo pristupa.
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

mikelins

Član broj: 100604
Poruke: 15
*.rtv.co.yu.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi16.08.2007. u 12:51 - pre 202 meseci
1. ne koristi se AD
2. pod administratorskim nalogom, koristi se NTLM
3. serovan je da mogu da mu pristupe svi usseri (everyone) sa full kontrolom. ne znam zasto mi trazi ussername i password
 
Odgovor na temu

mirobor
Nederland

Član broj: 15124
Poruke: 43
*.cable.quicknet.nl.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi16.08.2007. u 22:27 - pre 202 meseci
A jesu li kompjuteri clanovi iste Workgroup-e?
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
212.200.219.*

Sajt: www.mika.rs


+6 Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi17.08.2007. u 10:43 - pre 202 meseci
Da, to je security issue NTLM-a koji ne dozvoljava double hop.
Mozes to da resis ne sledeci nacin: na racunaru na kome je IIS da napravis jedan nalog koji ce da sluzi samo za citanje sadrzaja foldera, i takav identican nalog napravi na racunaru sa kojeg hoces da citas sadrzaj serovanog foldera.

Zatim pre izvrsenja metode GetFile promeni security kontekst na gore navedeni nalog preko metode Impersonate.
Code:

        WindowsImpersonationContext wic;

        [DllImport("advapi32.dll")]
        public static extern int LogonUserA(String lpszUsername, String lpszDomain,
            String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
        [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern int DuplicateToken(IntPtr hToken, int impersionationLevel,
            ref IntPtr phNewToken);
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        public static extern bool CloseHandle(IntPtr handle);

        protected void Impersonate(string userName, string domain, string password)
        {
            IntPtr token = IntPtr.Zero, tokenDupl = IntPtr.Zero;
            WindowsIdentity winIdentity;

            if (LogonUserA(userName, domain, password, 2, 0, ref token) != 0 &&
                DuplicateToken(token, 2, ref tokenDupl) != 0)
            {
                winIdentity = new WindowsIdentity(tokenDupl);
                if ((wic = winIdentity.Impersonate()) != null)
                {
                    CloseHandle(tokenDupl);
                    CloseHandle(token);
                }
            }
        }

I na kraju, kada ti treba tvoj kontekst pod kojim si se logovao pozovi wic.Undo(); i to je to
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

mikelins

Član broj: 100604
Poruke: 15
*.rtv.co.yu.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi20.08.2007. u 08:57 - pre 202 meseci
Kod mi funkcionise kada se logujem na svoj comp, ali nikako ne uspevam da se logujem na drugi comp u mrezi. Postoji user na tom compu pomocu koga pokusavam da se ulogujem. Kada se logujem na svoj koristim
impersonateValidUser("Usser", "ImeMogRacunara", "Password") i sve lepo radi

kada se lugujem na drugi racunar koristim

impersonateValidUser("Usser", "ImeRacunaraUMrezi", "Password") ili
impersonateValidUser("Usser", @"\\ImeRacunaraUMrezi", "Password")

ne funkcionise. Gde je greska ???? :(
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.adsl-1.sezampro.yu.

Sajt: www.mika.rs


+6 Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi20.08.2007. u 09:52 - pre 202 meseci
Da li taj nalog postoji i na tvom racunaru i na drugom racunaru i da li su im isti username i password ?

BTW posto si rekao da niste u domenu, nema svrhe da drugi parametar domain stavis na bilo sta drugo do '.'.
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

mikelins

Član broj: 100604
Poruke: 15
*.rtv.co.yu.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi20.08.2007. u 10:09 - pre 202 meseci
Taj nalog postoji samo na drugom racunaru na koji pokusavam da se logujem. Nije isti ussername i password. Kako ce aplikacija znati na koji comp da se loguje?
 
Odgovor na temu

mirobor
Nederland

Član broj: 15124
Poruke: 43
*.cable.quicknet.nl.



Profil

icon Re: Problem - pristup direktorijumu drugog racunara u mrezi20.08.2007. u 15:20 - pre 202 meseci
Jos jednom pitam jesu li kompjuteri clanovi iste radne grupe, ako nisu i ako nisu na istom domein-u pitace te password do kraja zivota.

//Kako ce aplikacija znati na koji comp da se loguje? //

Aplikacija mozda nezna, ali computer zna da mu neko nepoznat vrslja po disku pa trazi user name i password!
 
Odgovor na temu

[es] :: .NET :: Problem - pristup direktorijumu drugog racunara u mrezi

Strane: 1 2

[ Pregleda: 7951 | Odgovora: 23 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.