Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Access Denied Error όταν καλώ την My.Computer.FileSystem.CopyFile

Îåêßíçóå áðü ôï ìÝëïò rantanplan. Τελευταία δημοσίευση από το μέλος rantanplan στις 27-05-2009, 15:34. Υπάρχουν 8 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  26-05-2009, 14:44 50987

    Access Denied Error όταν καλώ την My.Computer.FileSystem.CopyFile

    Παιδιά γράφω κάπου το εξής:


            Me.GroupBox2.Enabled = False

            Dim day, month, year, file As String

            day = Today.Day.ToString()
            If day.Length = 1 Then
                day = "0" + day
            End If

            month = Today.Month.ToString()
            If month.Length = 1 Then
                month = "0" + month
            End If

            year = Today.Year.ToString()

            file = "siebel_sia" + year + month + day + ".srf"


            Dim DailyCompile As String = "\\10.0.100.90\siebel\8.0\web client\OBJECTS\ENU\" + file
            Dim currentSRF As String = "\\10.0.90.93\c$\sba80\siebsrvr\OBJECTS\ENU\siebel_sia.srf"
            Dim SRFatServer As String = "\\10.0.90.93\c$\sba80\siebsrvr\OBJECTS\ENU\" + file

            Try
                My.Computer.FileSystem.DeleteFile(currentSRF)
                My.Computer.FileSystem.CopyFile(DailyCompile, SRFatServer)
                My.Computer.FileSystem.RenameFile(SRFatServer, "siebel_sia.srf")
            Catch ex As Exception
                MessageBox.Show(ex.Message + Chr(13) + "Please change manual the srf file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
                End
            End Try


            Me.GroupBox2.Enabled = True

            CheckControlsUAT()
            
            
    Και πέρνω exception με το εξής μήνυμα:
    Access to the path "\\10.0.100.90\siebel\8.0\web client\OBJECTS\ENU\siebel_sia20090525.srf" is denied.

    Απο το pc μου έχω πρόσβαση κανονικά στο συγκεκριμένο path. Πρέπει να του περάσω κάπως τα cridentials?
    Keep programming.....
  •  26-05-2009, 14:57 50988 σε απάντηση της 50987

    Απ: Start & shut down windows services

    Μία desktop εφαρμογή χρησιμοποιεί πάντα τα credentials του χρήστη που την εκτελεί. Αν παίρνεις access denied είναι γιατί όντως η εφαρμογή δεν έχει δικαίωμα να διαβάσει το συγκεκριμένο αρχείο.

    Από εκεί και πέρα, τί σχέση έχει ο παραπάνω κώδικας με το service? Και γιατί χρησιμοποιείς IP αντί για τα ονόματα των server? Πώς εκτελείται ο παραπάνω κώδικας? Τον εκτελείς στο debugger? Εκτελείς το τελικό exe? Κάτι άλλο?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  26-05-2009, 15:56 50994 σε απάντηση της 50988

    Απ: Start & shut down windows services

    Παναγιώτης Καναβός:

    Αφού η ερώτηση είναι άσχετη με την αρχική θα πρέπει να κάνεις νέο post, διαφορετικά απλά μπερδεύεις όποιον προσπαθήσει να σε βοηθήσει.

    Κανονικά η εφαρμογή δεν πρέπει να έχει κανένα πρόβλημα. Για να έχεις πρόβλημα σημαίνει ότι κάτι περίεργο συμβαίνει. Και ακόμα δεν μου είπες γιατί χρησιμοποιείς IP και όχι τα ονόματα των server!

    Αν την εκτελείς εσύ, στο PC σου, έχοντας κάνει login στο PC με το ίδιο domain account με το οποίο έχεις πρόσβαση στο server, η εφαρμογή δεν έχει λόγο να κτυπήσει. Αν όμως το PC σου ή οι server δεν είναι στο domain, ή αν χρησιμοποιείς local accounts για να διαβάσεις τα συγκεκριμένα folders, λογικό είναι η εφαρμογή να μην δουλέψει γιατί το ένα μηχάνημα δεν αναγνωρίζει τα accounts του άλλου μηχανήματος.

    Αν είσαι σίγουρος ότι δεν έχεις κάνει κάτι τέτοιο περίεργο, θα πρέπει να χρησιμοποιήσεις το Procmon για να δεις γιατί κτυπάει η εφαρμογή. Το ProcMon καταγράφει κάθε πρόσβαση (Read, Write, Delete κλπ) στο σκληρό και στο registry καθώς και το αποτέλεσμα. Θα πρέπει καταρχήν να περιορίσεις τα events που δείχνει μόνο στα File Events και μετά να τρέξεις την εφαρμογή σου. Εκτέλεσε τον κώδικα που δημιουργεί το πρόβλημα, κάνε pause το ProcMon και μετά ψάξε για το ACCESS DENIED που αντιστοιχεί στην εφαρμογή σου.
    To event του ProcMon θα σου εμφανίσει διάφορα στοιχεία, μεταξύ των οποίων και με ποιό account προσπάθησε η εφαρμογή σου να διαβάσει το αρχείο.



    Έχεις δίκαιο αλλα είπα να συνεχίσω το post μια που αφορούσε την ίδια εφαρμογή.
    Λοιπόν δεν έχω κάποιο ιδιαίτερο λόγο που χρησιμοποιώ IP.
    Βασικά κάνω login στο pc μου από όπου τρέχω την εφαρμογή με διαφορετικό domain account απο αυτό που κάνω στον server.
    Μπορώ με κάποιον τρόπο να δω τα συγκεκριμένα folders του server με το δικό μου  account?
    Και μια άλλη ερώτηση: Γιατί απο το run βλέπω κανονικά τα folder ενώ το applicaion που έφτιαξα δεν τα βλέπει;;
    Keep programming.....
  •  27-05-2009, 09:03 51009 σε απάντηση της 50994

    Απ: Start & shut down windows services

    Λοιπόν υπάρχουν 2 δρόμοι που μπορείς να ακολουθήσεις. 

    1) Ο πιο σωστός: Βάλε το admin σου να δημιουργήσει μια ομάδα χρηστών του Domain Που θα έχουν Read Write διακαιώματα στους φακέλους που θέλεις. Μετά πρόσθεσε σε αυτή την ομάδα όλους τους χρήστες που θα χρησιμοποιήσουν την εφαρμογή. Έτσι θα υπάρχει έλεγχος ποιος έχει προσβαση. Και να ξεχάσεις να βάλεις ένα νέο χρήστη θα του το υπενθυμίζεις πιάνοντας το συγκεκριμένο exception και δείχνοντας του ένα μήνυμα του στυλ. Ο χρήστης δεν έχει άδεια να δει τους φακέλους, προσθέστε τον στην κατάλληλη ομάδα.

    2) Ο πιο λάθος: Googlare impersonate user in vb.net forms για να δεις κάποιους τρόπους να χρησιμοποιείς τα δικαιώματα άλλου χρήστη. Δεν το προτείνω για αυτό και δεν πρόκειται να σε διευκολύνω





    Manos
  •  27-05-2009, 14:45 51023 σε απάντηση της 51009

    Απ: Start & shut down windows services

    manosB:
    Λοιπόν υπάρχουν 2 δρόμοι που μπορείς να ακολουθήσεις. 

    1) Ο πιο σωστός: Βάλε το admin σου να δημιουργήσει μια ομάδα χρηστών του Domain Που θα έχουν Read Write διακαιώματα στους φακέλους που θέλεις. Μετά πρόσθεσε σε αυτή την ομάδα όλους τους χρήστες που θα χρησιμοποιήσουν την εφαρμογή. Έτσι θα υπάρχει έλεγχος ποιος έχει προσβαση. Και να ξεχάσεις να βάλεις ένα νέο χρήστη θα του το υπενθυμίζεις πιάνοντας το συγκεκριμένο exception και δείχνοντας του ένα μήνυμα του στυλ. Ο χρήστης δεν έχει άδεια να δει τους φακέλους, προσθέστε τον στην κατάλληλη ομάδα.

    2) Ο πιο λάθος: Googlare impersonate user in vb.net forms για να δεις κάποιους τρόπους να χρησιμοποιείς τα δικαιώματα άλλου χρήστη. Δεν το προτείνω για αυτό και δεν πρόκειται να σε διευκολύνω

     
    Σε ευχαριστώ αλλά ο πρώτος δεν γίνεται δυστυχώς όποτε μάλλον θα ψάξω λίγο τον δεύτερο....

    Keep programming.....
  •  27-05-2009, 14:58 51024 σε απάντηση της 51023

    Απ: Start & shut down windows services

    Αφού θα ξανατονίσω ότι δεν είναι σωστό αυτό που κάνεις και έτσι το μόνο που καταφέρνουμε είναι να δίνουμε πατήματα στους admins να μας κατηγορούν για unsafe coding (Στη συγκεκριμένη περίπτωση θα έχουν απόλυτο δίκιο!!!!)


    Πρόκειται για πολύ απλή υλοποίηση της Win32 API function LogonUser. 


    Manos
  •  27-05-2009, 15:13 51026 σε απάντηση της 51024

    Απ: Start & shut down windows services

    Σε ευχαιστώ πάρα πολύ... θα το κοιτάξω και αν έχω απορία.....
    Keep programming.....
  •  27-05-2009, 15:28 51027 σε απάντηση της 51023

    Απ: Start & shut down windows services

    Θέλεις να πεις, ότι η εφαρμογή θα τρέχει με το Domain Account του χρήστη Α αλλά είτε θα ζητάει είτε θα κρατάει κάπου αποθηκευμένα τα credentials του Domain χρήστη B για να γράψει κάτι στους servers? Γιατί δεν βάζεις απλά τον χρήστη B να τρέξει την εφαρμογή τότε?

    Ή μήπως δεν μιλάμε για domain χρήστες? Μήπως την εφαρμογή την τρέχει ο Domain User A αλλά τα folders έχουν permissions για τον Server User B ?

    Αν κατάλαβα απ' όσα λέει ο Μάνος έχεις μία από τις δύο περιπτώσεις. Δεν μπορώ να καταλάβω όμως απ' όσα έχεις περιγράψει ως τώρα τί κάνεις. Υποψιάζομαι ότι έχεις μπερδέψει domain και local accounts και ποιό account κάνει τί.

    Έστω ότι το PC σου και οι servers βρίσκονται στο DomainA. Το PC σου λέγεται MyPC και ο server λέγεται MyServer. Έστω ότι το δικό σου account είναι το DomainA\AccountA. Αν προσπαθήσεις από το run να δεις τα folder του MyServer, θα σου επιτρέψει να δεις μόνο αυτά για τα οποία έχει δικαιώματα ο χρήστης DomainA\AccountA. Το ίδιο θα συμβεί και με την εφαρμογή που φτιάχνεις. Ο μόνος τρόπος να δεις τα folder ως άλλος χρήστης είναι να εκτελέσεις τον Windows Explorer με την εντολή Run As.

    Η άλλη περίπτωση είναι να μην εκτελείς καν εσύ την εφαρμογή αλλά να την εκτελείς ως scheduled task με το account κάποιου άλλου.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  27-05-2009, 15:34 51028 σε απάντηση της 51027

    Απ: Start & shut down windows services

    Λοιπόν το pc μου είναι στο DomainA με account UserA και θέλω να γράψω στο server που είναι στο DomainB. Το account που έχει πρόσβαση στο server είναι το UserB.
    Keep programming.....
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems