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

 

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

Ευρεση directory όταν το τρέχουμε σαν scheduler

Îåêßíçóå áðü ôï ìÝëïò evagelos. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 28-01-2015, 10:22. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  21-01-2015, 14:20 76335

    Ευρεση directory όταν το τρέχουμε σαν scheduler

    Γεια σας παιδια,

    Εχω ένα πρόγραμμα που θέλω να γράφει στο directory του προγράμματος ένα αρχειο txt.

    Όταν το τρέχω σαν exe μονος μου, εχω:

     string _myPath = Environment.CurrentDirectory;

     και όλα παιζουν μια χαρά.

    Το βαζω στο scheduler των windows και του λέω να τρέχει ανεξάρτητα αν είναι ο χρηστης μεσα η όχι, και το πρόγραμμα μου προσπαθει να γραψει στο system32

    τι κανω λαθος;

     

    Ευχαριστώ 

  •  21-01-2015, 18:20 76350 σε απάντηση της 76335

    Απ: Ευρεση directory όταν το τρέχουμε σαν scheduler

    Αν κάποιο application A εκτελει ενα αλλο Β τότε το Β εχει για CurrentDirectory αυτό του Α.

    Η εφαρμογή σου εχει CurrentDirectory το path του scheduler.

     

  •  27-01-2015, 10:16 76402 σε απάντηση της 76350

    Απ: Ευρεση directory όταν το τρέχουμε σαν scheduler

    Μαλιστα καταλαβα, και πως θα μπορέσω να βρω το directory του δικου μου προγράμματος (αν μπορώ βέβαια)
  •  27-01-2015, 14:27 76403 σε απάντηση της 76402

    Απ: Ευρεση directory όταν το τρέχουμε σαν scheduler

    Μπορείς να ορίσεις σε ποιό directory θα εκτελεστεί μία εφαρμογή. Βάλε το path που θέλεις στο "Start In"
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  27-01-2015, 22:30 76405 σε απάντηση της 76402

    Απ: Ευρεση directory όταν το τρέχουμε σαν scheduler

    var exePath=System.Reflection.Assembly .GetExecutingAssembly().GetName().CodeBase;
    var dirPath= System.IO.Path.GetDirectoryName(exePath) ;
     
     http://stackoverflow.com/questions/3991933/get-path-for-my-exe
  •  27-01-2015, 23:03 76406 σε απάντηση της 76405

    Απ: Ευρεση directory όταν το τρέχουμε σαν scheduler

    Αυτό δεν αρκεί, γιατί οποιοδήποτε relative path χρησιμοποιείται στην εφαρμογή θα είναι σε σχέση με το current directory. Δεν είναι δυνατόν να χρησιμοποιούνται απόλυτα paths σε όλη την εφαρμογή.

    Να υπενθυμίσω επίσης ότι κανονικά δεν μπορεί να γράψει οποιοσδήποτε στο Program Files για λόγους ασφάλειας. Είναι προτιμότερο να μπει ως ρύθμιση στο app.config το path στο οποίο θα γράφονται τα logs. Ακόμα καλύτερα, να χρησιμοποιηθεί μία βιβλιοθήκη logging όπως το log4net ή το NLog για να γράψει και να μορφοποιήσει τα logs


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  28-01-2015, 00:56 76407 σε απάντηση της 76406

    Απ: Ευρεση directory όταν το τρέχουμε σαν scheduler

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

    Αυτό δεν αρκεί, γιατί οποιοδήποτε relative path χρησιμοποιείται στην εφαρμογή θα είναι σε σχέση με το current directory. Δεν είναι δυνατόν να χρησιμοποιούνται απόλυτα paths σε όλη την εφαρμογή.

    Να υπενθυμίσω επίσης ότι κανονικά δεν μπορεί να γράψει οποιοσδήποτε στο Program Files για λόγους ασφάλειας. Είναι προτιμότερο να μπει ως ρύθμιση στο app.config το path στο οποίο θα γράφονται τα logs. Ακόμα καλύτερα, να χρησιμοποιηθεί μία βιβλιοθήκη logging όπως το log4net ή το NLog για να γράψει και να μορφοποιήσει τα logs

    To starts in, λειτουργει μια χαρα.

    Εβλεπα λίγο το log4net, και εκει όμως στο App.xml βαζει "καρφωτα" το path

    <file value="C:\temp\logfile_" />
    <datePattern value="dd.MM.yyyy'.log'" />

    Τι πρέπει να αλλαξω;
  •  28-01-2015, 10:22 76408 σε απάντηση της 76407

    Απ: Ευρεση directory όταν το τρέχουμε σαν scheduler

    Δεν είναι απαραίτητο να είναι absolute paths. Τα relative paths θα αποθηκευτούν στο current directory. Το θέμα όμως είναι ότι *δεν* πρέπει να γράφεις τα log στο Program Files αλλά ένα άλλο folder ειδικά για logs. 

    Τα Windows, από τα Windows 95 και μετά, έχουν ειδικά folders για να αποθηκεύουν οι εφαρμογές δεδομένα και να *μην* απαιτούν admin δικαιώματα για να γράψουν στο Program Files. Υπάρχουν άλλα folder για να αποθηκεύεις δεδομένα ανά χρήστη και άλλα για να αποθηκεύεις δεδομένα ανεξαρτήτως χρήστη. Η κάθε εφαρμογή πρέπει να φτιάξει εκεί ένα δικό της folder και να γράφει ό,τι θέλει.

     Το πρώτο είναι το AppData μέσα στο profile του χρήστη. Το full path του αποθηκεύτεται στο LOCALAPPDATA environment variable. Το δεύτερο είναι το ProgramData, του οποίου το path φαίνεται είτε μέσω του ProgramData env variable ή μέσω του ALLUSERPROFILES.

    Στο log4net μπορείς να προσθέσεις οποιοδήποτε environment variable σε ένα attribute και να γράψεις π.χ. value="${LOCALAPPDATA}\MyAppName\log_"  ή value="${ProgramData}\MyAppName\log_" 


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems